home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus Special 18 / AMIGAplus Sonderheft 18 (1999)(ICP)(DE)[!].iso / PD / Spiele / LightSpeed2 / Source / Light.e
Text File  |  1999-02-05  |  119KB  |  4,208 lines

  1. OPT LARGE
  2.  
  3. MODULE 'amigalib/ports',
  4.        'amigalib/io',                                       
  5.        'devices/gameport',
  6.        'devices/inputevent',
  7.        'devices/timer',
  8.        'devices/audio',
  9.        'exec/execbase',
  10.        'exec/io',
  11.        'exec/nodes',
  12.        'exec/ports',
  13.        'exec/memory',
  14.        'exec/devices',
  15.        'graphics/view',
  16.        'intuition/intuition',
  17.        'intuition/screens',
  18.        'gadtools',
  19.        'eaudio',
  20.        'graphics/text',
  21.        'libraries/gadtools',
  22.        'intuition/gadgetclass',
  23.        'graphics/modeid',
  24.        'mousepointer',
  25.        'devices/input',
  26.        'tools/file',
  27.        'iff',
  28.        'libraries/iff',
  29.        'graphics/rastport'
  30.  
  31.       
  32. -> GADGET & ERROR ENUMERATIONS
  33.  
  34. ENUM ERR_NONE, ERR_DEV, ERR_DEV2, ERR_SCREEN, ERR_ACTIVE, ERR_GAD, 
  35.      ERR_WINDOW, ERR_FILE, ERR_IO, ERR_PORT, MYGAD_BUTTON, ERR_AUPORT,
  36.      ERR_AUIO, ERR_DEV3, ERR_AUDIO, TEM, 
  37.      MYGAD_CYCLE, ERR_KICK, ERR_LIB, MYGAD_SLIDER, MYGAD_SLIDER2, 
  38.      MYGAD_SLIDER3, ERR_VIS, ERR_DEVTI, ERR_DEVIN, ERR_ACPORT, ERR_TIPORT, 
  39.      ERR_INPORT, ERR_TIIO, ERR_INIO, MYGAD_BUTTON6, MYGAD5_BUTTON2, 
  40.      MYGAD5_BUTTON, MYGAD_BUTTON2, MYGAD2_SLIDER, MYGAD_BUTTON3, MYGAD_BUTTON4, 
  41.      MYGAD_BUTTON5, MYGAD2_CHECKBOX, MYGAD2_CHECKBOX2, MYGAD2_CHECKBOX3, 
  42.      MYGAD2_CHECKBOX4, MYGAD2_CHECKBOX5, MYGAD2_BUTTON, MYGAD2_BUTTON2, MYGAD3_CYCLE, 
  43.      MYGAD3_CYCLE2, MYGAD3_CYCLE3, MYGAD3_CYCLE4, MYGAD3_BUTTON, 
  44.      MYGAD3_BUTTON2, MYGAD4_BUTTON, MYGAD4_BUTTON2, MYGAD3_STRING, 
  45.      MYGAD3_STRING2, MYGAD3_STRING3, MYGAD3_STRING4, MYGAD4_BUTTON3, 
  46.      MYGAD4_BUTTON4, MYGAD4_BUTTON5, MYGAD4_BUTTON6
  47.  
  48. -> END GADGET & ERROR ENUMERATIONS
  49.  
  50. DEF abutton, abutton2, acycle, abutton3, abutton4, abutton5, speed1=0,
  51.     bcheckbox, bcheckbox2, bcheckbox3, bslider, bcheckbox4, bcheckbox5,
  52.     bbutton, bbutton2, ccycle4, ccycle, ccycle3, ccycle2, cbutton, cbutton2,
  53.     errmessage[200]:STRING, dbutton, dbutton2, dslider2, dslider3, 
  54.     slider_levela, slider_levelb, slider_levelc, mywin4=NIL:PTR TO window, 
  55.     gad4 , dbutton3, dbutton4, dbutton5, dbutton6, cstring:PTR TO gadget, 
  56.     cstring2=NIL:PTR TO gadget, cstring3:PTR TO gadget, cstring4:PTR TO gadget, 
  57.     gad5, ebutton2:PTR TO gadget, ebutton:PTR TO gadget, terminated5=FALSE, 
  58.     wcheat=0, who, limspeed1=0, limspeed2=0, limspeed3=0, limspeed4=0, 
  59.     movex, movey, limspeedc1=0, limspeedc2=0, limspeedc3=0, limspeedc4=0, 
  60.     movex2, movey2, blocked5, newgame=TRUE , joy1loop=TRUE, 
  61.     joy2loop=TRUE, open_devin=FALSE, restoremouse=TRUE, joy3loop=TRUE, 
  62.     joy4loop=TRUE, playcount=0, e[4]:ARRAY, exec:PTR TO execbase, vi,
  63.     topborder,quit=0, screen=NIL:PTR TO screen, topaz80, gamepicmem=NIL,
  64.     terminated, terminated2, terminated3, terminated4, mainwin=NIL:PTR TO window,
  65.     mywin=NIL:PTR TO window, start1=FALSE, myreq:requester, samplec=NIL:PTR TO LONG,
  66.     sampled=NIL:PTR TO LONG, samplei=NIL:PTR TO LONG, samplend, sampleni,
  67.     swooshy=TRUE, sliderb_level=70,
  68.     samplenc, shineBorder, shadowBorder, hiddenclosed=TRUE, movementx, grey, 
  69.     movementy, movementx3, movementy3, shineBorderC, shadowBorderC, bee, 
  70.     playon=FALSE, pausewin, play1control=0, play2control=1, play3control=2,
  71.     play4control=3, noterminate3=0, obstacles=TRUE, accelaration=1, wrap=TRUE, 
  72.     blocks=FALSE, playerno=0, not_finished, tname1[7]:STRING, tname2[7]:STRING,
  73.     tname3[7]:STRING, tname4[7]:STRING, name1[7]:STRING, name2[7]:STRING,  
  74.     name3[7]:STRING, name4[7]:STRING, joy1=1, joy2=4, joy3=3, joy4=2, joy,
  75.     controller_type_addr1, controller_type_addr2, play1=0, play2=0, play3=0,
  76.     play4=0, x1=194, y1=221, x2=40, y2=167, x3=106, y3=47, x4=275, y4=83,
  77.     cx1=194, cy1=221, cx2=40, cy2=167, cx3=106, cy3=47, cx4=275, cy4=83,
  78.     cway1=1, cway2=2, cway3=3, cway4=4, tempy1, tempy2, tempx1, tempx2, die1=TRUE,  
  79.     cdie1=FALSE, cloop1=0, cloop2=10, cloop3=17, cloop4=25, cloop, die2=TRUE, 
  80.     diel, x, y, speed, die3=FALSE , cdie2=FALSE, cdie3=TRUE, cdie4=FALSE,
  81.     die4=TRUE, speed3=0, speed4=0, speed2=0, chipx, chipy, rndchip,
  82.     obhity1, obhity2,
  83.     col1r=255, col1g=255, col1b=255, col2r=255, col2g=255, col2b=165, col3r=165, 
  84.     col3g=255, col3b=165, col4r=255, col4g=180, col4b=180, sactive, 
  85.     timerio=NIL:PTR TO timerequest, timermp=NIL:PTR TO mp, howlong, 
  86.     howlong2, mouserequest=NIL:PTR TO iostd, lport=NIL:PTR TO mp,
  87.     game_io_msg=NIL:PTR TO iostd, game_msg_port=NIL, open_dev=FALSE,
  88.     game_io_msgm=NIL:PTR TO iostd,game_msg_portm=NIL,open_devm=FALSE,
  89.     open_devti=FALSE, hidden:PTR TO window, mywinch:PTR TO window,
  90.     stupid=69, clever, audiomp=NIL:PTR TO mp, audioio=NIL:PTR TO ioaudio,
  91.     open_devau=FALSE, bob=0, audioprob:PTR TO unit, samplen, 
  92.     sample=NIL:PTR TO LONG, return=0, iffinram, ct[256]:ARRAY OF INT,
  93.     mdwin=NIL:PTR TO window, chiplen1, chiplen2, chip1data, chip2data, chip1mem=NIL, chip2mem=NIL, chip1, chip2
  94.  
  95.  
  96. CONST JOY_X_DELTA=1, JOY_Y_DELTA=1, TIMEOUT_SECONDS=0, SLIDER_MIN=0, 
  97.       SLIDER_MAX=255
  98.  
  99.  RAISE ERR_SCREEN IF OpenS()=NIL
  100.  RAISE ERR_WINDOW IF OpenW()=NIL
  101.  RAISE ERR_LIB IF OpenLibrary()=NIL
  102.  RAISE ERR_GAD  IF CreateGadgetA()=NIL
  103.  RAISE ERR_VIS IF GetVisualInfoA()=NIL
  104.  RAISE TEM     IF AllocMem()=NIL
  105.  
  106. PROC resetdefs()
  107.    x1:=194 ;   y1:=221 
  108.    x2:=40  ;   y2:=167
  109.    x3:=106 ;   y3:=47
  110.    x4:=275 ;   y4:=83
  111.   cx1:=194 ;  cy1:=221 
  112.   cx2:=40  ;  cy2:=167
  113.   cx3:=106 ;  cy3:=47
  114.   cx4:=275 ;  cy4:=83
  115.   cway1:=1 
  116.   cway2:=2 
  117.   cway3:=3
  118.   cway4:=4
  119.   speed1:=0
  120.   speed2:=0
  121.   speed3:=0
  122.   speed4:=0
  123.   start1:=FALSE
  124.   newgame:=TRUE
  125.   joy1loop:=TRUE
  126.   joy2loop:=TRUE
  127.   joy3loop:=TRUE
  128.   joy4loop:=TRUE
  129.   playcount:=0
  130.   cloop1:=0
  131.   cloop2:=10
  132.   cloop3:=17
  133.   cloop4:=25
  134.   limspeed1:=0
  135.   limspeed2:=0
  136.   limspeed3:=0
  137.   limspeed4:=0
  138.   limspeedc1:=0
  139.   limspeedc2:=0
  140.   limspeedc3:=0
  141.   limspeedc4:=0
  142.  
  143. ENDPROC                         
  144.  
  145. PROC main() HANDLE
  146.   DEF pub_screen_font:PTR TO textattr, opened_font, portlock, 
  147.       actport=NIL:PTR TO mp, kickversion=37
  148. StringF(tname1,'Jam') 
  149. StringF(tname2,'Custard')
  150. StringF(tname3,'Syrup')
  151. StringF(tname4,'Treacle')
  152.  
  153.    IF KickVersion(kickversion)=FALSE THEN Raise(ERR_KICK)
  154.   portlock:=FindPort('LightSpeed.Active')
  155.   IF portlock<>0 THEN Raise(ERR_ACTIVE)
  156.  
  157. IF NIL=(actport:=createPort('LightSpeed.Active', 0)) THEN Raise(ERR_ACPORT)
  158. IF NIL=(timermp:=createPort('LightSpeed-Timer',0)) THEN Raise(ERR_TIPORT)
  159. IF NIL=(timerio:=createExtIO(timermp, SIZEOF timerequest)) THEN Raise(ERR_TIIO)
  160. IF (OpenDevice('timer.device', UNIT_WAITUNTIL, timerio, 0))<>0 THEN Raise(ERR_DEVTI) ELSE open_devti:=TRUE
  161. IF NIL=(lport:=createPort('LightSpeed-Input',0)) THEN Raise(ERR_INPORT)
  162. IF NIL=(mouserequest:=CreateIORequest(lport, SIZEOF iostd)) THEN Raise(ERR_INIO)
  163. IF (OpenDevice('input.device', 0, mouserequest,0))<>0 THEN Raise(ERR_DEVIN) ELSE open_devin:=TRUE
  164. IF NIL=(game_msg_port:=createPort('LightSpeed.GamePort', 0)) THEN Raise(ERR_PORT)
  165. IF NIL=(game_io_msg:=createExtIO(game_msg_port, SIZEOF iostd)) THEN Raise(ERR_IO)
  166. IF (OpenDevice('gameport.device', 1, game_io_msg, 0))<>0 THEN Raise(ERR_DEV) ELSE open_dev:=TRUE
  167. IF NIL=(game_msg_portm:=createPort('LightSpeed.GamePort-Mouse', 0)) THEN Raise(ERR_PORT)
  168. IF NIL=(game_io_msgm:=createExtIO(game_msg_portm, SIZEOF iostd)) THEN Raise(ERR_IO)
  169. IF (OpenDevice('gameport.device', 0, game_io_msgm, 0))<>0 THEN Raise(ERR_DEV2) ELSE open_devm:=TRUE
  170. IF NIL=(audiomp:=createPort('LightSpeed-Audio',0)) THEN Raise(ERR_AUPORT)
  171. IF NIL=(audioio:=CreateIORequest(audiomp, SIZEOF ioaudio)) THEN Raise(ERR_AUIO)
  172. IF (OpenDevice('audio.device',0, audioio, NIL))<>0 THEN Raise(ERR_DEV3) ELSE open_devau:=TRUE 
  173. initaudio()
  174. gadtoolsbase:=OpenLibrary('gadtools.library', 37)
  175. iffbase:=OpenLibrary('iff.library', 22)
  176. setup()
  177. decrypt()
  178.         pub_screen_font:=['topaz.font',8,0,65]:textattr
  179.         opened_font:=OpenFont(pub_screen_font)
  180.  screen:=OpenS(320,256,6,NIL,'LightSpeed2',[SA_BEHIND, TRUE, SA_PENS, [-1]:INT, SA_FONT, pub_screen_font, NIL])
  181. mainwin:=OpenW(0,11,320,245,NIL, WFLG_BORDERLESS OR WFLG_ACTIVATE, NIL, screen,$F,NIL,NIL)
  182. SetTopaz(8)
  183.  
  184. chip1:=[$FFFFFFFF, $FFFFFE00, $FFFF81C7, $FFFFFA00, $FFFF9C7F, $FFFFC400, $FFFFB8FF, $FFFF8600, $FFFFB1FF, $400, $FFFFA3FE, $200, $FFFF87FC, $800, $FFFFCFF8, $1A00, $FFFFDFF0, $3C00, $FFFFFFE0, $7600, $FFFFBFC0, $FFFFE400, $FFFFBF81, $FFFFC200, $FFFFBF03, $FFFF8800, $FFFFFE07, $1A00, $FFFFFC0E, $3800, $FFFFF81C, $7200, $FFFFF038, $FFFFE000, $FFFFE071, $FFFFC200, $FFFFC0E3, $FFFF8000, $FFFFC1C7, $200, $FFFFC38E, $0, $FFFFB8E0, $200, $5555, $5400, $FFFFAAAA, $FFFFAA00, $7FC0, $FFFFE000, $FFFFFC00, $200, $7800, $0, $FFFFF000, $200, $6000, $400, $FFFFC000, $600, $4000, $400, $FFFFC000, $600, $4000, $C00, $FFFF8000, $1E00, $0, $3800, $FFFF8000, $7A00, $0, $FFFFF800, $FFFF8001, $FFFFFE00, $3, $FFFFF400, $FFFFC007, $FFFFE600, $400F, $FFFFC400, $FFFFC01F, $FFFF8E00, $3F, $1C00, $FFFF807E, $3E00, $7E3, $FFFFFC00, $FFFFAAAA, $FFFFAA00, $FFFFAAAA, $FFFFAA00, $3F, $0, $FFFF83F8, $200, $7F0, $0, $FFFF8FE0, $200, $1FC0, $0, $FFFFBF80, $200, $3F00, $0, $FFFFBE00, $200, $3C00, $0, $FFFFF800, $200, $7000, $400, $FFFFE000, $600, $4000, $400, $FFFFC000, $200, $4000, $800, $FFFF8000, $1A00, $0, $3800, $FFFF8000, $7200, $0, $FFFFE000, $FFFF8001, $FFFFC200, $1C, $0, $FFFFAAAA, $FFFFAA00, $FFFFAAAA, $FFFFAA00, $0, $FFFFE400, $FFFF8000, $3E00, $0, $7C00, $FFFF8000, $FFFFFE00, $1, $FFFFFC00, $FFFF8003, $FFFFFE00, $7, $FFFFFC00, $FFFF800F, $FFFFFE00, $1F, $FFFFFC00, $FFFF803F, $FFFFFE00, $7F, $FFFFFC00, $FFFF80FF, $FFFFFE00, $1FF, $FFFFFC00, $FFFF83FF, $FFFFFA00, $7FF, $FFFFF800, $FFFFCFFF, $FFFFFA00, $5FFF, $FFFFF800, $FFFFFFFF, $FFFFF200, $3FFF, $FFFFE000, $FFFFBFFF, $FFFFC200, $7FFC, $0, $FFFFAAAA, $FFFFAA00, $FFFFAAAA, $FFFFAA00, $7FFF, $1C00, $FFFFFFFF, $FFFFFE00, $7FFF, $FFFFFC00, $FFFFFFFF, $FFFFFE00, $7FFF, $FFFFFC00, $FFFFFFFF, $FFFFFE00, $7FFF, $FFFFFC00, $FFFFFFFF, $FFFFFE00, $7FFF, $FFFFFC00, $FFFFFFFF, $FFFFFE00, $7FFF, $FFFFFC00, $FFFFFFFF, $FFFFFE00, $7FFF, $FFFFFC00, $FFFFFFFF, $FFFFFE00, $7FFF, $FFFFFC00, $FFFFBFFF, $FFFFFE00, $3FFF, $FFFFFC00, $FFFFBFFF, $FFFFFE00, $7FFF, $FFFFFC00, $FFFFFFFF, $FFFFFE00, $7FFF, $FFFFFC00, $FFFFAAAA, $FFFFAA00, $FFFFAAAA, $FFFFAA00, $7FFF, $FFFFE400, $FFFFFFF8, $3E00, $7FF0, $7C00, $FFFFFFE0, $FFFFFE00, $7FC1, $FFFFFC00, $FFFFFF83, $FFFFFE00, $7F07, $FFFFFC00, $FFFFFE0F, $FFFFFE00, $7C1F, $FFFFFC00, $FFFFF83F, $FFFFFE00, $707F, $FFFFFC00, $FFFFE0FF, $FFFFFE00, $41FF, $FFFFFC00, $FFFFC3FF, $FFFFFA00, $47FF, $FFFFF800, $FFFFCFFF, $FFFFFA00, $5FFF, $FFFFF800, $FFFFFFFF, $FFFFF200, $3FFF, $FFFFE000, $FFFFBFFF, $FFFFC200, $7FFC, $0, $FFFFAAAA, $FFFFAA00]:INT
  185.  
  186. chip2:=[$FFFFFFFF, $FFFFFE00, $FFFFFE38, $FFFFE600, $FFFFEDBF, $C00, $FFFFC93E, $E00, $FFFFDB7E, $1C00, $FFFFD27C, $1A00, $FFFFF6FC, $3000, $FFFFA4F8, $3200, $FFFFADF8, $6000, $FFFF89F0, $6600, $FFFFDBF0, $FFFFCC00, $FFFFD3E0, $FFFFCE00, $FFFFF7E1, $FFFF9C00, $FFFFA7C1, $FFFF9E00, $FFFFAFC3, $3800, $FFFF8F83, $3200, $FFFFDF86, $7000, $FFFFDF06, $6600, $FFFFFF0C, $FFFFE400, $FFFFBE0C, $FFFFCE00, $FFFFBE19, $FFFFCC00, $FFFFC71C, $7E00, $5555, $5400, $FFFFAAAA, $FFFFAA00, $1F8, $1800, $FFFF9C70, $FFFFFE00, $38F1, $FFFFFC00, $FFFFB8E1, $FFFFFE00, $31E3, $FFFFF800, $FFFFB1C3, $FFFFF200, $63C7, $FFFFF000, $FFFFE387, $FFFFE200, $478F, $FFFFE000, $FFFFC70F, $FFFFC200, $4F1F, $FFFFC000, $FFFFCE1F, $FFFF8200, $1E3F, $FFFF8000, $FFFF9C3F, $600, $3C7F, $C00, $FFFFB87E, $E00, $38FE, $1C00, $FFFFB0FC, $1E00, $71FC, $3C00, $FFFFE1F8, $3E00, $3F03, $FFFFFC00, $FFFFAAAA, $FFFFAA00, $FFFFAAAA, $FFFFAA00, $7, $FFFFF800, $FFFF83F0, $200, $7F0, $0, $FFFF87E0, $200, $FE0, $400, $FFFF8FC0, $E00, $1FC0, $C00, $FFFF9F80, $1E00, $3F80, $1C00, $FFFFBF00, $3E00, $3F00, $3C00, $FFFFBE00, $7E00, $7E00, $7C00, $FFFFFC00, $FFFFFE00, $7C00, $FFFFFC00, $FFFFF801, $FFFFFE00, $7801, $FFFFFC00, $FFFFF003, $FFFFFE00, $7003, $FFFFFC00, $FFFFE007, $FFFFFE00, $FF, $FFFFFC00, $FFFFAAAA, $FFFFAA00, $FFFFAAAA, $FFFFAA00, $0, $400, $FFFF800F, $FFFFFE00, $F, $FFFFFC00, $FFFF801F, $FFFFFE00, $1F, $FFFFFC00, $FFFF803F, $FFFFFE00, $3F, $FFFFFC00, $FFFF807F, $FFFFFE00, $7F, $FFFFFC00, $FFFF80FF, $FFFFFE00, $FF, $FFFFFC00, $FFFF81FF, $FFFFFE00, $1FF, $FFFFFC00, $FFFF83FF, $FFFFFE00, $3FF, $FFFFFC00, $FFFF87FF, $FFFFFE00, $7FF, $FFFFFC00, $FFFF8FFF, $FFFFFE00, $FFF, $FFFFFC00, $FFFF9FFF, $FFFFFE00, $7FFF, $FFFFFC00, $FFFFAAAA, $FFFFAA00, $FFFFAAAA, $FFFFAA00, $0, $0, $FFFF8000, $200, $0, $0, $FFFF8000, $200, $0, $0, $FFFF8000, $200, $0, $0, $FFFF8000, $200, $0, $0, $FFFF8000, $200, $0, $0, $FFFF8000, $200, $0, $0, $FFFF8000, $200, $0, $0, $FFFF8000, $200, $0, $0, $FFFF8000, $200, $0, $0, $FFFF8000, $200, $0, $0, $FFFFAAAA, $FFFFAA00, $FFFFAAAA, $FFFFAA00, $7FFF, $FFFFFC00, $FFFFFFFF, $FFFFFE00, $7FFF, $FFFFFC00, $FFFFFFFF, $FFFFFE00, $7FFF, $FFFFFC00, $FFFFFFFF, $FFFFFE00, $7FFF, $FFFFFC00, $FFFFFFFF, $FFFFFE00, $7FFF, $FFFFFC00, $FFFFFFFF, $FFFFFE00, $7FFF, $FFFFFC00, $FFFFFFFF, $FFFFFE00, $7FFF, $FFFFFC00, $FFFFFFFF, $FFFFFE00, $7FFF, $FFFFFC00, $FFFFFFFF, $FFFFFE00, $7FFF, $FFFFFC00, $FFFFFFFF, $FFFFFE00, $7FFF, $FFFFFC00, $FFFFFFFF, $FFFFFE00, $7FFF, $FFFFFC00, $FFFFAAAA, $FFFFAA00]:INT
  187.  
  188.  
  189. chiplen1:=ListMax(chip1)
  190. chip1mem:=AllocMem(chiplen1, MEMF_CHIP)
  191. CopyMem(chip1, chip1mem, chiplen1)
  192. chiplen2:=ListMax(chip2)
  193. chip2mem:=AllocMem(chiplen2, MEMF_CHIP)
  194. CopyMem(chip2, chip2mem, chiplen2)
  195.  
  196. chip1data:=[0, 0, 23, 23, 6, chip1mem, 63, 0, NIL]:image 
  197. chip2data:=[0, 0, 23, 23, 6, chip2mem, 63, 0, NIL]:image
  198.  
  199. gamepicmem:=AllocMem(54330, MEMF_CHIP)
  200. CopyMem({gamepic}, gamepicmem, 54330)
  201. iffinram:=AllocMem(59966, MEMF_CHIP)
  202. CopyMem({mainpic}, iffinram, 59966)
  203. setcols()
  204. IfFL_DecodePic(iffinram,screen+184)
  205. intrnd()
  206.  
  207. IF FileLength('PROGDIR:light.prefs')>-1 THEN loadprefs()
  208. ScreenToFront(screen)
  209. ShowTitle(screen, TRUE)
  210. playData(sample,samplen,4500000,CHAN_LEFT1+CHAN_RIGHT1+CHAN_LEFT2+CHAN_RIGHT2,64)
  211.     WaitTOF()
  212.     exitLoop(CHAN_LEFT1+CHAN_RIGHT1+CHAN_LEFT2+CHAN_RIGHT2)
  213.  gadtoolsWindow(0)
  214.  IF quit=0
  215.          begingame()
  216.  ENDIF
  217.  
  218. WHILE quit=0
  219. terminated:=FALSE
  220. resetdefs()
  221. terminated5:=FALSE
  222. onMousePointer(hidden)
  223. scorecard()
  224. IF playon=TRUE
  225. begingame()
  226. playon:=FALSE
  227. ELSE
  228. SetStdRast(hidden.rport)
  229. Box(0,0,319,255,0)
  230. setcols()
  231. CloseW(hidden)
  232. hiddenclosed:=TRUE 
  233. play1:=0
  234. play2:=0
  235. play3:=0
  236. play4:=0
  237.   gadtoolsWindow(1)
  238. IF quit<>0
  239. hiddenclosed:=TRUE 
  240. JUMP term
  241. ENDIF
  242.          begingame()
  243. ENDIF
  244. ENDWHILE
  245. term:
  246.  
  247.  EXCEPT DO
  248.   IF hiddenclosed=FALSE THEN CloseW(hidden)
  249.   IF opened_font THEN CloseFont(opened_font)
  250.   IF gadtoolsbase THEN CloseLibrary(gadtoolsbase)
  251.   IF iffbase THEN CloseLibrary(iffbase)
  252.   IF iffinram THEN FreeMem(iffinram, 59966)
  253.   IF gamepicmem THEN FreeMem(gamepicmem, 54330)
  254.   IF chip1mem THEN FreeMem(chip1mem, chiplen1)
  255.   IF chip2mem THEN FreeMem(chip2mem, chiplen2)
  256.   IF mainwin THEN CloseW(mainwin)
  257.   IF screen THEN CloseS(screen)
  258.   IF actport THEN deletePort(actport)
  259.   IF open_devti THEN CloseDevice(timerio)
  260.   IF timerio THEN deleteExtIO(timerio)
  261.   IF timermp THEN deletePort(timermp)
  262.   IF restoremouse=FALSE THEN instmouse()
  263.   IF open_devin THEN CloseDevice(mouserequest)
  264.   IF mouserequest THEN DeleteIORequest(mouserequest)
  265.   IF lport THEN deletePort(lport)    
  266.   IF open_dev THEN CloseDevice(game_io_msg)
  267.   IF game_io_msg THEN deleteExtIO(game_io_msg)
  268.   IF game_msg_port THEN deletePort(game_msg_port)
  269.   IF open_devm THEN CloseDevice(game_io_msgm)
  270.   IF game_io_msgm THEN deleteExtIO(game_io_msgm)
  271.   IF game_msg_portm THEN deletePort(game_msg_portm)
  272.   IF sample THEN FreeMem(sample, 12760)
  273.   IF samplec THEN FreeMem(samplec, 3900)
  274.   IF sampled THEN FreeMem(sampled, 3121)
  275.   IF samplei THEN FreeMem(samplei, 9536)
  276.   IF open_devau THEN cleanupaudio()
  277.   IF open_devau THEN CloseDevice(audioio)
  278.   IF audioio THEN DeleteIORequest(audioio)
  279.   IF audiomp THEN deletePort(audiomp)
  280.    
  281.  IF exception
  282.   SELECT exception
  283.    CASE "MEM" ;     request('out of memory',0,'')
  284.    CASE TEM ;       request('out of memory',0,'')
  285.    CASE "^C";       request('User ***Break',0,'')        
  286.    CASE ERR_DEV;    request('could not open gameport device, unit:1',0,'')
  287.    CASE ERR_DEV2;   request('could not open gameport device, unit:0',0,'')
  288.    CASE ERR_DEV3;   request('could not open/allocate the audio device',0,'')
  289.    CASE ERR_DEVTI;  request('could not open timer device, UNIT_MICROHZ',0,'')
  290.    CASE ERR_DEVIN;  request('could not open input device, unit:0',0,'')
  291.    CASE ERR_IO;     request('could not create gameport I/O',0,'')
  292.    CASE ERR_TIIO;   request('could not create timer I/O',0,'')
  293.    CASE ERR_INIO;   request('could not create input I/O',0,'')
  294.    CASE ERR_PORT;   request('could not create gameport port',0,'')
  295.    CASE ERR_ACPORT; request('could not create LightSpeed.Active port',0,'')
  296.    CASE ERR_TIPORT; request('could not create LightSpeed.Timer port',0,'')
  297.    CASE ERR_INPORT; request('could not create LightSpeed.Input port',0,'')
  298.    CASE ERR_SCREEN; request('could not create a screen',0,'')
  299.    CASE ERR_AUDIO;  request('audio prob',0,'')
  300.    CASE ERR_WINDOW; request('could not create a window',0,'')
  301.    CASE ERR_GAD;    request('could not create the gadgets',0,'')
  302.    CASE ERR_VIS;    request('could not get the visual info',0,'')
  303.    CASE ERR_ACTIVE; request('LightSpeed2 already active',0,'')
  304.    CASE ERR_LIB;    request('could not open Gadtools Library V.37',0,'')
  305.    CASE ERR_KICK;   REPEAT ; kickversion:=kickversion-1 ; UNTIL KickVersion(kickversion)=TRUE ;  WriteF('\nLightSpeed2 needs at least Kickstart version 37 to run:\nyou have Kickstart version \d\n\nMaybe its time to upgrade :-)\n\n',kickversion) ; WriteF('Error: returncode 236\n') ; return:=236
  306.    CASE 18766;      request('Error Loading Data Files\n\n (File Read Protected?)',0,'')
  307.    CASE "OPEN";     StringF(errmessage,'could not open file \s', IF exceptioninfo THEN exceptioninfo ELSE '') ; request(errmessage,0,'')
  308.    DEFAULT 
  309.       IF exception<10000
  310.             StringF(errmessage,'Program Caused Error: \d',exception)
  311.             request(errmessage,0,'')
  312.       ELSE
  313.             e[4]:=0
  314.             ^e:=exception
  315.             WHILE e[]=0 DO e++
  316.                 IF exceptioninfo<1000
  317.                      StringF(errmessage,'Error: "\s" [\d]',exceptioninfo)
  318.                 ELSE
  319.                      StringF(errmessage,'Error: "\s" [\h]',exceptioninfo)
  320.                 ENDIF
  321.                      request(errmessage,0,'') 
  322.       ENDIF
  323. ENDSELECT
  324.  ENDIF
  325. ENDPROC return
  326.  
  327. PROC setcols2()
  328. SetColour(screen,0,170,170,170)
  329. SetColour(screen,1,0,0,0)
  330. SetColour(screen,2,255,255,255)
  331. SetColour(screen,3,100,100,100)
  332. SetColour(screen,4,255,255,255)
  333. SetColour(screen,5,255,255,165)
  334. SetColour(screen,6,165,255,165)
  335. SetColour(screen,7,255,180,180)
  336. SetColour(screen,8,0,0,220)
  337. SetColour(screen,9,0,0,212)
  338. SetColour(screen,10,0,0,206)
  339. SetColour(screen,11,0,0,198)
  340. SetColour(screen,12,0,0,191)
  341. SetColour(screen,13,0,0,184)
  342. SetColour(screen,14,0,0,177)
  343. SetColour(screen,15,0,0,169)
  344. SetColour(screen,16,0,0,163)
  345. SetColour(screen,17,76,35,83)
  346. SetColour(screen,18,48,7,76)
  347. SetColour(screen,19,101,62,90)
  348. SetColour(screen,20,0,0,134)
  349. SetColour(screen,21,0,0,127)
  350. SetColour(screen,22,0,0,120)
  351. SetColour(screen,23,0,0,112)
  352. SetColour(screen,24,0,0,106)
  353. SetColour(screen,25,0,0,98)
  354. SetColour(screen,26,0,0,91)
  355. SetColour(screen,27,0,0,84)
  356. SetColour(screen,28,0,0,77)
  357. SetColour(screen,29,0,0,69)
  358. SetColour(screen,30,0,0,63)
  359. SetColour(screen,31,0,0,55)
  360. SetColour(screen,32,131,74,194)
  361. SetColour(screen,33,120,70,182)
  362. SetColour(screen,34,110,68,171)
  363. SetColour(screen,35,99,65,158)
  364. SetColour(screen,36,88,62,147)
  365. SetColour(screen,37,79,58,135)
  366. SetColour(screen,38,73,56,120)
  367. SetColour(screen,39,69,55,110)
  368. SetColour(screen,40,66,55,103)
  369. SetColour(screen,41,65,54,96)
  370. SetColour(screen,42,67,51,90)
  371. SetColour(screen,43,75,47,74)
  372. SetColour(screen,44,79,42,59)
  373. SetColour(screen,45,90,35,40)
  374. SetColour(screen,46,98,31,23)
  375. SetColour(screen,47,106,25,7)
  376. SetColour(screen,48,0,0,141)
  377. SetColour(screen,49,97,57,89)
  378. SetColour(screen,50,94,53,88)
  379. SetColour(screen,51,88,47,86)
  380. SetColour(screen,52,84,44,85)
  381. SetColour(screen,53,79,39,83)
  382. SetColour(screen,54,0,0,155)
  383. SetColour(screen,55,73,32,83)
  384. SetColour(screen,56,73,30,85)
  385. SetColour(screen,57,68,26,84)
  386. SetColour(screen,58,62,21,80)
  387. SetColour(screen,59,56,15,78)
  388. SetColour(screen,60,53,11,77)
  389. SetColour(screen,61,0,0,149)
  390. SetColour(screen,62,143,94,87)
  391. SetColour(screen,63,163,130,95)
  392. ENDPROC
  393.  
  394. PROC setcols()
  395. DEF grey=4
  396. FOR grey:=0 TO 63
  397. SetColour(screen, grey, 170, 170, 170)
  398. ENDFOR
  399. SetColour(screen,0,170,170,170)
  400. SetColour(screen,1,0,0,0)
  401. SetColour(screen,2,255,255,255)
  402. SetColour(screen,3,110,110,110)
  403. SetColour(screen,4,255,255,255)
  404. SetColour(screen,5,255,255,165)
  405. SetColour(screen,6,165,255,165)
  406. SetColour(screen,7,255,180,180)
  407. SetColour(screen,8,0,0,220)
  408. SetColour(screen,9,0,0,212)
  409. SetColour(screen,10,0,0,206)
  410. SetColour(screen,11,0,0,198)
  411. SetColour(screen,12,0,0,191)
  412. SetColour(screen,13,0,0,184)
  413. SetColour(screen,14,0,0,177)
  414. SetColour(screen,15,0,0,169)
  415. SetColour(screen,16,0,0,163)
  416. SetColour(screen,17,144,84,198)
  417. SetColour(screen,18,89,66,132)
  418. SetColour(screen,19,209,107,255)
  419. SetColour(screen,20,0,0,134)
  420. SetColour(screen,21,0,0,127)
  421. SetColour(screen,22,0,0,120)
  422. SetColour(screen,23,0,0,112)
  423. SetColour(screen,24,0,0,106)
  424. SetColour(screen,25,0,0,98)
  425. SetColour(screen,26,0,0,91)
  426. SetColour(screen,27,0,0,84)
  427. SetColour(screen,28,0,0,77)
  428. SetColour(screen,29,0,0,69)
  429. SetColour(screen,30,0,0,63)
  430. SetColour(screen,31,0,0,55)
  431. SetColour(screen,32,0,0,141)
  432. SetColour(screen,33,196,102,255)
  433. SetColour(screen,34,183,98,248)
  434. SetColour(screen,35,171,94,231)
  435. SetColour(screen,36,157,89,215)
  436. SetColour(screen,37,0,0,155)
  437. SetColour(screen,38,131,79,182)
  438. SetColour(screen,39,119,75,165)
  439. SetColour(screen,40,106,70,149)
  440. SetColour(screen,41,0,0,149)
  441. SetColour(screen,42,255,160,232)
  442. SetColour(screen,43,244,136,198)
  443. SetColour(screen,44,230,128,187)
  444. SetColour(screen,45,217,120,175)
  445. SetColour(screen,46,202,112,163)
  446. SetColour(screen,47,188,103,152)
  447. SetColour(screen,48,173,96,140)
  448. SetColour(screen,49,167,89,139)
  449. SetColour(screen,50,161,83,139)
  450. SetColour(screen,51,155,76,138)
  451. SetColour(screen,52,147,70,138)
  452. SetColour(screen,53,142,64,136)
  453. SetColour(screen,54,135,57,136)
  454. SetColour(screen,55,130,51,135)
  455. SetColour(screen,56,123,44,135)
  456. SetColour(screen,57,118,37,134)
  457. SetColour(screen,58,110,32,134)
  458. SetColour(screen,59,105,25,133)
  459. SetColour(screen,60,98,19,133)
  460. SetColour(screen,61,92,12,132)
  461. SetColour(screen,62,157,94,87)
  462. SetColour(screen,63,179,130,95)
  463. ENDPROC
  464.  
  465. PROC intrnd()
  466. DEF div
  467. timerio.io.command:=TR_GETSYSTIME
  468. DoIO(timerio)
  469. howlong:=timerio.time.secs
  470. timerio.io.command:=TR_GETSYSTIME
  471. DoIO(timerio)
  472. howlong2:=timerio.time.secs
  473. div:=howlong*2
  474. howlong:=howlong-div
  475. Rnd(howlong)
  476. ENDPROC
  477.  
  478. PROC setlines()
  479. SetColour(screen,4,col1r,col1g,col1b)
  480. SetColour(screen,5,col2r,col2g,col2b)
  481. SetColour(screen,6,col3r,col3g,col3b)
  482. SetColour(screen,7,col4r,col4g,col4b)
  483. ENDPROC
  484.  
  485. PROC gadtoolsWindow(access) HANDLE
  486.   DEF font=NIL, glist=NIL, projItem, menus, menu1, menutitle, menustrip:PTR
  487. TO menu, left=0,
  488.       my_gads[7]:ARRAY OF LONG, mysc=NIL:PTR TO screen
  489.   topaz80:=['topaz.font', 8, 0, 0]:textattr
  490.   font:=OpenFont(topaz80)
  491.   vi:=GetVisualInfoA(screen, [NIL])
  492.  
  493.   topborder:=mysc.wbortop+screen.font.ysize+1
  494.  
  495.   createAllGadgets({glist}, vi, topborder, my_gads)
  496.  
  497.   mywin:=OpenW(154, 126,141,97,IDCMP_MENUPICK OR IDCMP_VANILLAKEY OR IDCMP_REFRESHWINDOW OR BUTTONIDCMP OR IDCMP_CLOSEWINDOW OR IDCMP_GADGETDOWN OR IDCMP_GADGETUP, WFLG_NEWLOOKMENUS OR WFLG_CLOSEGADGET OR WFLG_ACTIVATE, 'Options', screen, $F, glist, NIL)
  498. SetTopaz(8)
  499.  
  500.   menu1:=[NIL, 0, 0, 90, 10,
  501.           ITEMTEXT OR COMMSEQ OR ITEMENABLED OR HIGHCOMP, 0,
  502.           [1, 2, RP_JAM2, 3, 1, topaz80, 'About', NIL]:intuitext,
  503.           NIL, "A", NIL, NIL]:menuitem
  504.  
  505.   menu1:=[menu1, 0, 11, 90, 10,
  506.           ITEMTEXT OR COMMSEQ OR ITEMENABLED OR HIGHCOMP, 0,
  507.           [1, 2, RP_JAM2, 3, 1, topaz80, 'Quit', NIL]:intuitext,
  508.           NIL, "Q", NIL, NIL]:menuitem
  509.   
  510.  menutitle:='About'
  511.  
  512.   menustrip:=[NIL, left, 0,
  513.               TextLength(mywin.wscreen.rastport, menutitle, 10),
  514.               10, MENUENABLED, menutitle, menu1, 0, 0, 0, 0]:menu
  515.  
  516.   left:=left+menustrip.width
  517.  
  518.   SetMenuStrip(mywin, menustrip)
  519.  
  520.  
  521.   process_window_events(mywin, my_gads)
  522.  
  523.  EXCEPT DO  
  524.   ClearMenuStrip(mywin)
  525.   IF mywin THEN CloseW(mywin)
  526.   FreeGadgets(glist)
  527.   IF vi THEN FreeVisualInfo(vi)
  528.   IF font THEN CloseFont(font)
  529.   ReThrow()
  530. ENDPROC
  531.  
  532. PROC handleGadgetEvent(win, gad:PTR TO gadget, code,
  533.                        my_gads:PTR TO LONG)
  534.   DEF id
  535.   id:=gad.gadgetid
  536.  
  537.   SELECT id
  538.   CASE MYGAD_CYCLE
  539.   playerno:=playerno+1
  540.   IF playerno=5 THEN playerno:=0
  541. CASE MYGAD_BUTTON
  542. terminated:=TRUE
  543.   CASE MYGAD_BUTTON4
  544.   colourcontrol()
  545. terminated4:=FALSE
  546.   CASE MYGAD_BUTTON2
  547.   playercontrol()
  548. terminated3:=FALSE
  549.   CASE MYGAD_BUTTON5
  550.   gameprefs()
  551. terminated2:=FALSE
  552. ENDSELECT
  553. ENDPROC
  554.  
  555. PROC about()
  556. DEF build:PTR TO window, buildmsg, buildcode, endrequest1=FALSE, endrequest2=FALSE,
  557. buildgad:PTR TO gadget
  558. ghostgadgets()
  559.  
  560.  
  561. build:=BuildEasyRequestArgs(mywin,[20,0,'LightSpeed2','Coded in AmigaE by Micro Design:\n\nRichard West              (code)\nDaniel Pimley   (graphics/sound)\n\n    This program is FREEWARE\n\n       Copyright © 1998\nDaniel Pimley and Richard West', 'OK'],0,NIL)
  562.  
  563.  
  564. SetStdRast(build.rport)
  565. REPEAT
  566. Line(141,114,148,114,1)
  567. buildmsg:=WaitIMessage(build)
  568. buildcode:=MsgCode()
  569. IF (buildcode=30224) OR (buildcode=111) OR (buildcode=79) OR (buildcode=26582) THEN endrequest1:=TRUE
  570. UNTIL endrequest1=TRUE
  571. SetStdRast(mywin.rport)    
  572. FreeSysRequest(build)
  573. unghostgadgets()
  574. ENDPROC                                                              
  575.  
  576. PROC handleVanillaKey(win, code, my_gads:PTR TO LONG)
  577. SELECT code
  578. CASE -2048
  579. terminated:=TRUE
  580. quit:=9
  581. CASE -2016
  582. about()
  583. ENDSELECT
  584.   SELECT "z" OF code
  585. CASE "x", "X"
  586.   playerno:=playerno+1
  587.   IF playerno=5 THEN playerno:=0
  588. Gt_SetGadgetAttrsA(acycle,win,NIL,[GTCY_ACTIVE, playerno, GA_DISABLED, FALSE, NIL])
  589. CASE "b", "B"
  590. terminated:=TRUE
  591. CASE "p", "P"
  592. playercontrol()
  593. terminated3:=FALSE
  594. CASE "c", "C"
  595. colourcontrol()
  596. terminated4:=FALSE
  597. CASE "a", "A"
  598. about()
  599. CASE "g", "G"
  600. gameprefs()
  601. terminated2:=FALSE
  602. CASE "q", "Q"
  603. terminated:=TRUE
  604. quit:=9
  605.   ENDSELECT
  606. ENDPROC
  607.  
  608. PROC createAllGadgets(glistptr:PTR TO LONG, vi, topborder, my_gads:PTR TO LONG)  
  609. DEF gad, ng:PTR TO newgadget
  610.   gad:=CreateContext(glistptr)
  611.  
  612.    ng:=[140, (20+topborder), 200, 12, '', topaz80,
  613.         NIL, NIL, vi, 0]:newgadget
  614.  
  615.  
  616.   ng.leftedge   := 8
  617.   ng.topedge    := 15
  618.   ng.width      := 125
  619.   ng.height     := 12
  620.   ng.gadgettext := '_x:        '
  621.   ng.gadgetid   :=MYGAD_CYCLE
  622.   ng.flags      :=PLACETEXT_IN
  623.   acycle:=CreateGadgetA(CYCLE_KIND, gad, ng, [GT_UNDERSCORE, "_", GTCY_LABELS, ['  1 Player ', '  2 Players', '  3 Players', '  4 Players', 'Demo', NIL],GTCY_ACTIVE, playerno, NIL])
  624.  
  625.   ng.leftedge   := 8
  626.   ng.topedge    := 31
  627.   ng.width      := 125
  628.   ng.height     := 12
  629.   ng.gadgettext := '_Begin Game'
  630.   ng.gadgetid   := MYGAD_BUTTON
  631.   ng.flags      := 0
  632.   abutton:=CreateGadgetA(BUTTON_KIND, acycle, ng, [GT_UNDERSCORE, "_"])
  633.  
  634.   ng.leftedge   := 8
  635.   ng.topedge    := 47
  636.   ng.width      := 125
  637.   ng.height     := 12
  638.   ng.gadgettext := '_Player Control'
  639.   ng.gadgetid   := MYGAD_BUTTON2
  640.   ng.flags      := 0
  641.   abutton2:=CreateGadgetA(BUTTON_KIND, abutton, ng, [GT_UNDERSCORE, "_"])
  642.  
  643.   ng.leftedge   := 8
  644.   ng.topedge    := 63
  645.   ng.width      := 125
  646.   ng.height     := 12 
  647.   ng.gadgettext := '_Colour Control'
  648.   ng.gadgetid   := MYGAD_BUTTON4
  649.   ng.flags      := 0
  650.   abutton3:=CreateGadgetA(BUTTON_KIND, abutton2, ng, [GT_UNDERSCORE, "_"])
  651.  
  652.   ng.leftedge   := 8
  653.   ng.topedge    := 79
  654.   ng.width      := 125
  655.   ng.height     := 12
  656.   ng.gadgettext := '_Game Prefs'
  657.   ng.gadgetid   := MYGAD_BUTTON5
  658.   ng.flags      := 0
  659.   abutton4:=CreateGadgetA(BUTTON_KIND, abutton3, ng, [GT_UNDERSCORE, "_"])
  660.  
  661. ENDPROC(gad)
  662.  
  663. PROC process_window_events(mywin:PTR TO window, my_gads:PTR TO LONG)
  664.   DEF imsg:PTR TO intuimessage, imsgClass, imsgCode, gad
  665. DEF build:PTR TO window, buildmsg, buildcode, endrequest3=FALSE,
  666. buildgad:PTR TO gadget
  667.  
  668.   REPEAT
  669.     Wait(Shl(1, mywin.userport.sigbit))
  670.     WHILE (terminated=FALSE) AND (imsg:=Gt_GetIMsg(mywin.userport))
  671.       gad:=imsg.iaddress
  672.  
  673.       imsgClass:=imsg.class
  674.       imsgCode:=imsg.code
  675.  
  676.       Gt_ReplyIMsg(imsg)
  677.  
  678.       SELECT imsgClass
  679.       CASE IDCMP_GADGETDOWN
  680.         handleGadgetEvent(mywin, gad, imsgCode, my_gads)
  681.       CASE IDCMP_MOUSEMOVE
  682.         handleGadgetEvent(mywin, gad, imsgCode, my_gads)
  683.       CASE IDCMP_GADGETUP
  684.         handleGadgetEvent(mywin, gad, imsgCode, my_gads)
  685.       CASE IDCMP_CLOSEWINDOW
  686.         quit:=9
  687.         terminated:=TRUE
  688.       CASE IDCMP_VANILLAKEY
  689.         handleVanillaKey(mywin, imsgCode, my_gads)
  690.       CASE IDCMP_REFRESHWINDOW
  691.         Gt_BeginRefresh(mywin)
  692.         Gt_EndRefresh(mywin, TRUE)
  693.       CASE 256
  694.         handleVanillaKey(mywin, imsgCode, my_gads)
  695.       ENDSELECT
  696.  
  697.  
  698.     ENDWHILE
  699.   UNTIL terminated
  700. ENDPROC
  701.  
  702. PROC gameprefs() HANDLE
  703.   DEF glist2=NIL, mywin2=NIL, my_gads2[6]:ARRAY OF LONG
  704.  
  705. ghostgadgets()
  706.   createAllGadgets2({glist2}, vi, topborder, my_gads2)
  707.   mywin2:=OpenW(17,85,282,97,IDCMP_VANILLAKEY OR IDCMP_REFRESHWINDOW OR BUTTONIDCMP OR IDCMP_GADGETDOWN OR IDCMP_GADGETUP OR SLIDERIDCMP, WFLG_ACTIVATE OR WFLG_DRAGBAR, 'Game Prefs', screen, $F, glist2, NIL)
  708. Line(266,69,273,69,1)
  709. Colour(1)
  710. TextF(8,53,'CPU Turning:')
  711. Gt_RefreshWindow(mywin2, NIL)
  712. SetTopaz(8)
  713.   process_window_events2(mywin2, my_gads2)
  714.  
  715. EXCEPT DO
  716.   IF mywin2 THEN CloseW(mywin2)
  717.   FreeGadgets(glist2)
  718.   ReThrow()
  719. unghostgadgets()
  720. stupid:=sliderb_level
  721. ENDPROC
  722.  
  723. PROC createAllGadgets2(glistptr:PTR TO LONG, vi, topborder,
  724.                       my_gads:PTR TO LONG)
  725.   DEF gad2, ng:PTR TO newgadget
  726.   gad2:=CreateContext(glistptr)
  727.  
  728.   ng:=[140, (20+topborder), 200, 12, '_Volume:   ', topaz80,
  729.         NIL, NG_HIGHLABEL, vi, 0]:newgadget
  730.  
  731.  
  732.   ng.leftedge   := 48
  733.   ng.topedge    := 15
  734.   ng.width      := 80
  735.   ng.height     := 12
  736.   ng.gadgettext := '_Fire'
  737.   ng.gadgetid   :=MYGAD2_CHECKBOX
  738.   ng.flags      :=PLACETEXT_LEFT
  739.   bcheckbox:=CreateGadgetA(CYCLE_KIND, gad2, ng, [GT_UNDERSCORE, "_", GTCY_LABELS, ['None', 'Speed', 'Shield', NIL],GTCY_ACTIVE, accelaration, NIL])
  740.  
  741.   ng.leftedge   := 248
  742.   ng.topedge    := 15
  743.   ng.gadgettext := 'Dying _Lines'
  744.   ng.gadgetid   := MYGAD2_CHECKBOX3
  745.   ng.flags      := 0
  746.   bcheckbox2:=CreateGadgetA(CHECKBOX_KIND, bcheckbox, ng, [GT_UNDERSCORE, "_", GTCB_CHECKED, blocks])
  747.  
  748.   ng.leftedge   := 102
  749.   ng.topedge    := 30
  750.   ng.gadgettext := '_Obstacles'
  751.   ng.gadgetid   := MYGAD2_CHECKBOX2
  752.   ng.flags      := 0
  753.   bcheckbox3:=CreateGadgetA(CHECKBOX_KIND, bcheckbox2, ng, [GT_UNDERSCORE, "_", GTCB_CHECKED, obstacles])
  754.  
  755.   ng.leftedge   := 248
  756.   ng.topedge    := 30
  757.   ng.gadgettext := 'Screen _Wrap'
  758.   ng.gadgetid   := MYGAD2_CHECKBOX4
  759.   ng.flags      := 0
  760.   bcheckbox4:=CreateGadgetA(CHECKBOX_KIND, bcheckbox3, ng, [GT_UNDERSCORE, "_", GTCB_CHECKED, wrap])
  761.  
  762.   ng.leftedge   := 248
  763.   ng.topedge    := 45
  764.   ng.gadgettext := 'Swoos_hes'
  765.   ng.gadgetid   := MYGAD2_CHECKBOX5
  766.   ng.flags      := 0
  767.   bcheckbox5:=CreateGadgetA(CHECKBOX_KIND, bcheckbox4, ng, [GT_UNDERSCORE, "_", GTCB_CHECKED, swooshy])
  768.  
  769.   ng.leftedge   := 8
  770.   ng.topedge    := 76
  771.   ng.width      := 129
  772.   ng.height     := 15
  773.   ng.gadgettext := '_Save'
  774.   ng.gadgetid   := MYGAD2_BUTTON
  775.   ng.flags      := 0
  776.   bbutton:=CreateGadgetA(BUTTON_KIND, bcheckbox5, ng, [GT_UNDERSCORE, "_"])
  777.  
  778.   ng.leftedge   := 145
  779.   ng.topedge    := 76
  780.   ng.width      := 129
  781.   ng.height     := 15
  782.   ng.gadgettext := '_Use'
  783.   ng.gadgetid   := MYGAD2_BUTTON2
  784.   ng.flags      := 0
  785.   bbutton2:=CreateGadgetA(BUTTON_KIND, bbutton, ng, [GT_UNDERSCORE, "_"])
  786.  
  787.   ng.leftedge   := 39
  788.   ng.topedge    := 60
  789.   ng.width      := 204
  790.   ng.height     := 12
  791.   ng.gadgettext := '_T/t'
  792.   ng.gadgetid   := MYGAD2_SLIDER
  793.   ng.flags      := PLACETEXT_RIGHT
  794.   bslider:=CreateGadgetA(SLIDER_KIND, bbutton2, ng,
  795.                                     [GTSL_MIN,         20,
  796.                                      GTSL_MAX,         100,
  797.                                      GTSL_LEVEL,       sliderb_level,
  798.                                      GTSL_LEVELFORMAT, '\d[3]',
  799.                                      GTSL_MAXLEVELLEN, 10,
  800.                                      GA_DISABLED,      FALSE,
  801.                                      GT_UNDERSCORE,    "_",
  802.                                      NIL])
  803.  
  804. ENDPROC(gad2)
  805.  
  806. PROC process_window_events2(mywin2:PTR TO window, my_gads2:PTR TO LONG)
  807.   DEF imsg:PTR TO intuimessage, imsgClass, imsgCode, gad2
  808.  
  809.   REPEAT
  810.     Wait(Shl(1, mywin2.userport.sigbit))
  811.     WHILE (terminated2=FALSE) AND (imsg:=Gt_GetIMsg(mywin2.userport))
  812.       gad2:=imsg.iaddress
  813.  
  814.       imsgClass:=imsg.class
  815.       imsgCode:=imsg.code
  816.  
  817.       Gt_ReplyIMsg(imsg)
  818.  
  819.       SELECT imsgClass
  820.       CASE IDCMP_GADGETDOWN
  821.         handleGadgetEvent2(mywin2, gad2, imsgCode, my_gads2)
  822.       CASE IDCMP_MOUSEMOVE
  823.         handleGadgetEvent2(mywin2, gad2, imsgCode, my_gads2)
  824.       CASE IDCMP_GADGETUP
  825.         handleGadgetEvent2(mywin2, gad2, imsgCode, my_gads2)
  826.       CASE IDCMP_VANILLAKEY
  827.         handleVanillaKey2(mywin2, imsgCode, my_gads2)
  828.       CASE IDCMP_REFRESHWINDOW
  829.         Gt_BeginRefresh(mywin2)
  830.         Gt_EndRefresh(mywin2, TRUE)
  831.       ENDSELECT
  832.     ENDWHILE
  833.   UNTIL terminated2
  834. ENDPROC
  835.  
  836. PROC handleGadgetEvent2(win, gad:PTR TO gadget, code,
  837.                        my_gads:PTR TO LONG)
  838.   DEF id
  839.   id:=gad.gadgetid
  840.   SELECT id
  841.   CASE MYGAD2_CHECKBOX2
  842.   IF obstacles=TRUE THEN obstacles:=FALSE ELSE obstacles:=TRUE
  843.   CASE MYGAD2_CHECKBOX
  844.   accelaration:=accelaration+1 ; IF accelaration=3 THEN accelaration:=0
  845.   CASE MYGAD2_CHECKBOX4
  846.   IF wrap=TRUE THEN wrap:=FALSE ELSE wrap:=TRUE
  847.   CASE MYGAD2_CHECKBOX5
  848.   IF swooshy=FALSE THEN swooshy:=TRUE ELSE swooshy:=FALSE
  849.   CASE MYGAD2_CHECKBOX3
  850.   IF blocks=TRUE THEN blocks:=FALSE ELSE blocks:=TRUE
  851.   CASE MYGAD2_SLIDER
  852.     sliderb_level:=code
  853.   CASE MYGAD2_BUTTON
  854. stupid:=sliderb_level
  855.   saveprefs()
  856.   terminated2:=TRUE
  857.   CASE MYGAD2_BUTTON2
  858. stupid:=sliderb_level
  859.   terminated2:=TRUE
  860.  
  861. ENDSELECT
  862. ENDPROC
  863.  
  864. PROC handleVanillaKey2(win, code, my_gads:PTR TO LONG)
  865.   SELECT "z" OF code
  866. CASE "o", "O"
  867. IF obstacles=TRUE THEN obstacles:=FALSE ELSE obstacles:=TRUE
  868. IF obstacles=FALSE
  869. Gt_SetGadgetAttrsA(bcheckbox3,win,NIL,[GTCB_CHECKED,FALSE])
  870. ELSE
  871. Gt_SetGadgetAttrsA(bcheckbox3,win,NIL,[GTCB_CHECKED,TRUE])
  872. ENDIF
  873. CASE "f", "F"
  874. accelaration:=accelaration+1 ; IF accelaration=3 THEN accelaration:=0
  875. Gt_SetGadgetAttrsA(bcheckbox,win,NIL,[GTCY_ACTIVE, accelaration])
  876. CASE "w", "W"
  877. IF wrap=TRUE THEN wrap:=FALSE ELSE wrap:=TRUE
  878. IF wrap=FALSE
  879. Gt_SetGadgetAttrsA(bcheckbox4,win,NIL,[GTCB_CHECKED,FALSE])
  880. ELSE
  881. Gt_SetGadgetAttrsA(bcheckbox4,win,NIL,[GTCB_CHECKED,TRUE])
  882. ENDIF
  883. CASE "h", "H"
  884. IF swooshy=FALSE THEN swooshy:=TRUE ELSE swooshy:=FALSE
  885. IF swooshy=FALSE
  886. Gt_SetGadgetAttrsA(bcheckbox5,win,NIL,[GTCB_CHECKED,FALSE])
  887. ELSE
  888. Gt_SetGadgetAttrsA(bcheckbox5,win,NIL,[GTCB_CHECKED,TRUE])
  889. ENDIF
  890. CASE "l", "L"
  891. IF blocks=TRUE THEN blocks:=FALSE ELSE blocks:=TRUE
  892. IF blocks=0
  893. Gt_SetGadgetAttrsA(bcheckbox2,win,NIL,[GTCB_CHECKED,FALSE])
  894. ELSE
  895. Gt_SetGadgetAttrsA(bcheckbox2,win,NIL,[GTCB_CHECKED,TRUE])
  896. ENDIF
  897.  
  898.   CASE "T"
  899. IF sliderb_level<100 THEN sliderb_level:=sliderb_level+1
  900.     Gt_SetGadgetAttrsA(bslider, win, NIL,
  901.                       [GTSL_LEVEL, sliderb_level, NIL])
  902.  
  903.   CASE "t"
  904. IF sliderb_level>20 THEN sliderb_level:=sliderb_level-1    
  905. Gt_SetGadgetAttrsA(bslider, win, NIL,
  906.                       [GTSL_LEVEL, sliderb_level, NIL])
  907.  
  908.  
  909. CASE "s", "S"
  910. stupid:=sliderb_level
  911. saveprefs()
  912.   terminated2:=TRUE
  913. CASE "u", "U"
  914. stupid:=sliderb_level
  915. terminated2:=TRUE
  916.   ENDSELECT
  917. ENDPROC
  918.  
  919. PROC playercontrol() HANDLE
  920.   DEF glist3=NIL, mywin3=NIL, my_gads3[16]:ARRAY OF LONG
  921.  
  922. ghostgadgets()
  923.  
  924. createAllGadgets3({glist3}, vi, topborder, my_gads3)
  925.   mywin3:=OpenW(0,26,320,100,STRINGIDCMP OR IDCMP_VANILLAKEY OR IDCMP_REFRESHWINDOW OR IDCMP_GADGETDOWN OR IDCMP_GADGETUP, WFLG_ACTIVATE OR WFLG_DRAGBAR, 'Player Control', screen, $F, glist3, NIL)
  926. SetTopaz(8)
  927.  
  928.   process_window_events3(mywin3, my_gads3)
  929.  
  930. EXCEPT DO  
  931. IF mywin3 THEN CloseW(mywin3)
  932.   FreeGadgets(glist3)
  933.  
  934.   ReThrow()
  935. unghostgadgets()
  936. ENDPROC
  937.  
  938. PROC createAllGadgets3(glistptr:PTR TO LONG, vi, topborder,
  939.                       my_gads:PTR TO LONG)
  940.   DEF gad3, ng:PTR TO newgadget
  941.   gad3:=CreateContext(glistptr)
  942.  
  943.   ng:=[140, (20+topborder), 200, 12, '_Volume:   ', topaz80,
  944.        NIL, NG_HIGHLABEL, vi, 0]:newgadget
  945.  
  946.  
  947.   ng.leftedge   := 72
  948.   ng.topedge    := 15
  949.   ng.width      := 110
  950.   ng.height     := 12
  951.   ng.gadgettext := 'P_ort #2'
  952.   ng.gadgetid   :=MYGAD3_CYCLE
  953.   ng.flags      := 0
  954.   ccycle:=CreateGadgetA(CYCLE_KIND, gad3, ng, [GTCY_ACTIVE, play1control, GT_UNDERSCORE, "_", GTCY_LABELS, ['Player 1', 'Player 2', 'Player 3', 'Player 4', NIL],NIL])
  955.  
  956.   ng.leftedge   := 72
  957.   ng.topedge    := 31
  958.   ng.width      := 110
  959.   ng.height     := 12
  960.   ng.gadgettext := 'Po_rt #1'
  961.   ng.gadgetid   :=MYGAD3_CYCLE2
  962.   ng.flags      := 0
  963.   ccycle2:=CreateGadgetA(CYCLE_KIND, ccycle, ng, [GTCY_ACTIVE, play2control, GT_UNDERSCORE, "_", GTCY_LABELS, ['Player 1', 'Player 2', 'Player 3', 'Player 4', NIL],NIL])
  964.  
  965.   ng.leftedge   := 72
  966.   ng.topedge    := 47
  967.   ng.width      := 110
  968.   ng.height     := 12
  969.   ng.gadgettext := '_Cursors'
  970.   ng.gadgetid   :=MYGAD3_CYCLE3
  971.   ng.flags      := 0
  972.   ccycle3:=CreateGadgetA(CYCLE_KIND, ccycle2, ng, [GTCY_ACTIVE, play3control, GT_UNDERSCORE, "_", GTCY_LABELS, ['Player 1', 'Player 2', 'Player 3', 'Player 4', NIL], NIL])
  973.  
  974.   ng.leftedge   := 72
  975.   ng.topedge    := 63
  976.   ng.width      := 110
  977.   ng.height     := 12
  978.   ng.gadgettext := '_Q-A-Z-X'
  979.   ng.gadgetid   :=MYGAD3_CYCLE4
  980.   ng.flags      := 0
  981.   ccycle4:=CreateGadgetA(CYCLE_KIND, ccycle3, ng, [GTCY_ACTIVE, play4control, GT_UNDERSCORE, "_", GTCY_LABELS, ['Player 1', 'Player 2', 'Player 3', 'Player 4', NIL], NIL])
  982.  
  983.   ng.leftedge   := 8
  984.   ng.topedge    := 79
  985.   ng.width      :=150
  986.   ng.height     := 15
  987.   ng.gadgettext := '_Save'
  988.   ng.gadgetid   := MYGAD3_BUTTON
  989.   ng.flags      := 0
  990.   cbutton:=CreateGadgetA(BUTTON_KIND, ccycle4, ng, [GA_DISABLED, FALSE, GT_UNDERSCORE, "_", NIL])
  991.  
  992.   ng.leftedge   := 162
  993.   ng.topedge    := 79
  994.   ng.width      := 150
  995.   ng.height     := 15
  996.   ng.gadgettext := '_Use'
  997.   ng.gadgetid   := MYGAD3_BUTTON2
  998.   ng.flags      := 0
  999.   cbutton2:=CreateGadgetA(BUTTON_KIND, cbutton, ng, [GA_DISABLED, FALSE, GT_UNDERSCORE, "_", NIL])
  1000.  
  1001.   ng.leftedge   := 236
  1002.   ng.topedge    := 15
  1003.   ng.width      := 76
  1004.   ng.height     := 12
  1005.   ng.gadgettext := '_Name:'
  1006.   ng.gadgetid   :=MYGAD3_STRING
  1007.   ng.flags      := 0
  1008.   cstring:=CreateGadgetA(STRING_KIND, cbutton2, ng, [GTST_STRING, tname1, GTST_MAXCHARS, 7, GT_UNDERSCORE, "_", NIL])
  1009.  
  1010.   ng.leftedge   := 236
  1011.   ng.topedge    := 31
  1012.   ng.width      := 76
  1013.   ng.height     := 12
  1014.   ng.gadgettext := 'N_ame:'
  1015.   ng.gadgetid   :=MYGAD3_STRING2
  1016.   ng.flags      := 0
  1017.   cstring2:=CreateGadgetA(STRING_KIND, cstring, ng, [GTST_STRING, tname2, GTST_MAXCHARS, 7, GT_UNDERSCORE, "_", NIL])
  1018.  
  1019.   ng.leftedge   := 236
  1020.   ng.topedge    := 47
  1021.   ng.width      := 76
  1022.   ng.height     := 12
  1023.   ng.gadgettext := 'Na_me:'
  1024.   ng.gadgetid   :=MYGAD3_STRING3
  1025.   ng.flags      := 0
  1026.   cstring3:=CreateGadgetA(STRING_KIND, cstring2, ng, [GTST_STRING, tname3, GTST_MAXCHARS, 7, GT_UNDERSCORE, "_", NIL])
  1027.  
  1028.  
  1029.   ng.leftedge   := 236
  1030.   ng.topedge    := 63
  1031.   ng.width      := 76
  1032.   ng.height     := 12
  1033.   ng.gadgettext := 'Nam_e:'
  1034.   ng.gadgetid   :=MYGAD3_STRING4
  1035.   ng.flags      := 0
  1036.   cstring4:=CreateGadgetA(STRING_KIND, cstring3, ng, [GTST_STRING, tname4, GTST_MAXCHARS, 7, GT_UNDERSCORE, "_", NIL])
  1037.  
  1038.  
  1039. ENDPROC(gad3)
  1040.  
  1041. PROC process_window_events3(mywin3:PTR TO window, my_gads3:PTR TO LONG)
  1042.   DEF imsg:PTR TO intuimessage, imsgClass, imsgCode, gad3:PTR TO gadget,
  1043.   gadgetid
  1044.  
  1045.   REPEAT
  1046.     Wait(Shl(1, mywin3.userport.sigbit))
  1047.     WHILE (terminated3=FALSE) AND (imsg:=Gt_GetIMsg(mywin3.userport))
  1048.       gad3:=imsg.iaddress
  1049.       gadgetid:=gad3.gadgetid
  1050.       imsgClass:=imsg.class
  1051.       imsgCode:=imsg.code
  1052.  
  1053.       Gt_ReplyIMsg(imsg)
  1054.  
  1055.       SELECT imsgClass
  1056.       CASE IDCMP_GADGETDOWN
  1057.         handleGadgetEvent3(mywin3, gad3, imsgCode, my_gads3)
  1058.       CASE IDCMP_GADGETUP
  1059.         handleGadgetEvent3(mywin3, gad3, imsgCode, my_gads3)
  1060.       CASE IDCMP_VANILLAKEY
  1061.         handleVanillaKey3(mywin3, imsgCode, my_gads3)
  1062.       CASE IDCMP_REFRESHWINDOW
  1063.         Gt_BeginRefresh(mywin3)
  1064.         Gt_EndRefresh(mywin3, TRUE)
  1065.       ENDSELECT
  1066.  
  1067. IF noterminate3=5
  1068. Gt_SetGadgetAttrsA(cbutton2,mywin3,cbutton2,[GA_DISABLED, TRUE])
  1069. Gt_SetGadgetAttrsA(cbutton,mywin3,cbutton,[GA_DISABLED, TRUE])
  1070. ELSE
  1071. Gt_SetGadgetAttrsA(cbutton,mywin3,cbutton,[GA_DISABLED, FALSE])
  1072. Gt_SetGadgetAttrsA(cbutton2,mywin3,cbutton2,[GA_DISABLED, FALSE])
  1073. ENDIF       
  1074.          
  1075.     ENDWHILE
  1076.   UNTIL terminated3
  1077. ENDPROC
  1078.  
  1079. PROC handleGadgetEvent3(win, gad:PTR TO gadget, code,
  1080.                        my_gads:PTR TO LONG)
  1081.   DEF id
  1082.  
  1083.   id:=gad.gadgetid
  1084.  
  1085.   SELECT id
  1086. CASE MYGAD3_STRING
  1087.   StringF(tname1,'\s', cstring.specialinfo::stringinfo.buffer)
  1088.  
  1089. CASE MYGAD3_STRING2
  1090.   StringF(tname2,'\s', cstring2.specialinfo::stringinfo.buffer)
  1091.  
  1092. CASE MYGAD3_STRING3
  1093.   StringF(tname3,'\s', cstring3.specialinfo::stringinfo.buffer)
  1094.  
  1095. CASE MYGAD3_STRING4
  1096.   StringF(tname4,'\s', cstring4.specialinfo::stringinfo.buffer)
  1097.  
  1098. CASE MYGAD3_CYCLE
  1099. play1control:=play1control+1
  1100. IF play1control=4 THEN play1control:=0
  1101. CASE MYGAD3_CYCLE2
  1102. play2control:=play2control+1
  1103. IF play2control=4 THEN play2control:=0
  1104. CASE MYGAD3_CYCLE3
  1105. play3control:=play3control+1
  1106. IF play3control=4 THEN play3control:=0
  1107. CASE MYGAD3_CYCLE4
  1108. play4control:=play4control+1
  1109. IF play4control=4 THEN play4control:=0
  1110.   CASE MYGAD3_BUTTON
  1111. saveprefs()
  1112.   terminated3:=TRUE
  1113.    CASE MYGAD3_BUTTON2
  1114.   terminated3:=TRUE
  1115. ENDSELECT
  1116.  
  1117. IF (play1control=play2control) OR (play1control=play3control) OR (play1control=play4control) OR (play2control=play3control) OR (play4control=play2control) OR (play3control=play4control) THEN noterminate3:=5 ELSE noterminate3:=0
  1118. ENDPROC
  1119.  
  1120. PROC handleVanillaKey3(win, code, my_gads:PTR TO LONG)
  1121.   SELECT "z" OF code
  1122. CASE "o", "O"
  1123. play1control:=play1control+1
  1124. IF play1control=4 THEN play1control:=0
  1125. IF play1control=0 THEN Gt_SetGadgetAttrsA(ccycle,win,NIL,[GA_DISABLED, FALSE, GTCY_ACTIVE, 0])
  1126. IF play1control=1 THEN Gt_SetGadgetAttrsA(ccycle,win,NIL,[GA_DISABLED, FALSE, GTCY_ACTIVE, 1])
  1127. IF play1control=2 THEN Gt_SetGadgetAttrsA(ccycle,win,NIL,[GA_DISABLED, FALSE, GTCY_ACTIVE, 2])
  1128. IF play1control=3 THEN Gt_SetGadgetAttrsA(ccycle,win,NIL,[GA_DISABLED, FALSE, GTCY_ACTIVE, 3])
  1129. IF (play1control=play2control) OR (play1control=play2control) OR (play1control=play3control) OR (play1control=play4control) OR (play2control=play3control) OR (play4control=play2control) OR (play3control=play4control) THEN noterminate3:=5 ELSE noterminate3:=0
  1130. CASE "r", "R"
  1131. play2control:=play2control+1
  1132. IF play2control=4 THEN play2control:=0
  1133. IF play2control=0 THEN Gt_SetGadgetAttrsA(ccycle2,win,NIL,[GA_DISABLED, FALSE, GTCY_ACTIVE, 0])
  1134. IF play2control=1 THEN Gt_SetGadgetAttrsA(ccycle2,win,NIL,[GA_DISABLED, FALSE, GTCY_ACTIVE, 1])
  1135. IF play2control=2 THEN Gt_SetGadgetAttrsA(ccycle2,win,NIL,[GA_DISABLED, FALSE, GTCY_ACTIVE, 2])
  1136. IF play2control=3 THEN Gt_SetGadgetAttrsA(ccycle2,win,NIL,[GA_DISABLED, FALSE, GTCY_ACTIVE, 3])
  1137. IF (play1control=play2control) OR (play1control=play2control) OR (play1control=play3control) OR (play1control=play4control) OR (play2control=play3control) OR (play4control=play2control) OR (play3control=play4control) THEN noterminate3:=5 ELSE noterminate3:=0
  1138. CASE "c", "C"
  1139. play3control:=play3control+1
  1140. IF play3control=4 THEN play3control:=0
  1141. IF play3control=0 THEN Gt_SetGadgetAttrsA(ccycle3,win,NIL,[GA_DISABLED, FALSE, GTCY_ACTIVE, 0])
  1142. IF play3control=1 THEN Gt_SetGadgetAttrsA(ccycle3,win,NIL,[GA_DISABLED, FALSE, GTCY_ACTIVE, 1])
  1143. IF play3control=2 THEN Gt_SetGadgetAttrsA(ccycle3,win,NIL,[GA_DISABLED, FALSE, GTCY_ACTIVE, 2])
  1144. IF play3control=3 THEN Gt_SetGadgetAttrsA(ccycle3,win,NIL,[GA_DISABLED, FALSE, GTCY_ACTIVE, 3])
  1145. IF (play1control=play2control) OR (play1control=play2control) OR (play1control=play3control) OR (play1control=play4control) OR (play2control=play3control) OR (play4control=play2control) OR (play3control=play4control) THEN noterminate3:=5 ELSE noterminate3:=0
  1146. CASE "q", "Q"
  1147. play4control:=play4control+1
  1148. IF play4control=4 THEN play4control:=0
  1149. IF play4control=0 THEN Gt_SetGadgetAttrsA(ccycle4,win,NIL,[GA_DISABLED, FALSE, GTCY_ACTIVE, 0])
  1150. IF play4control=1 THEN Gt_SetGadgetAttrsA(ccycle4,win,NIL,[GA_DISABLED, FALSE, GTCY_ACTIVE, 1])
  1151. IF play4control=2 THEN Gt_SetGadgetAttrsA(ccycle4,win,NIL,[GA_DISABLED, FALSE, GTCY_ACTIVE, 2])
  1152. IF play4control=3 THEN Gt_SetGadgetAttrsA(ccycle4,win,NIL,[GA_DISABLED, FALSE, GTCY_ACTIVE, 3])
  1153. IF (play1control=play2control) OR (play1control=play2control) OR (play1control=play3control) OR (play1control=play4control) OR (play2control=play3control) OR (play4control=play2control) OR (play3control=play4control) THEN noterminate3:=5 ELSE noterminate3:=0
  1154. CASE "s", "S"
  1155. IF noterminate3=0
  1156.   terminated3:=TRUE
  1157. saveprefs()
  1158. ENDIF
  1159. CASE "u", "U"
  1160. IF noterminate3=0 THEN terminated3:=TRUE
  1161. CASE "n", "N"
  1162. ActivateGadget(cstring,win,NIL)
  1163. CASE "a", "A"
  1164. ActivateGadget(cstring2,win,NIL)
  1165. CASE "m", "M"
  1166. ActivateGadget(cstring3,win,NIL)
  1167. CASE "e", "E"
  1168. ActivateGadget(cstring4,win,NIL)
  1169.   ENDSELECT
  1170. ENDPROC
  1171.  
  1172. PROC colourcontrol() HANDLE
  1173.   DEF glist4=NIL, my_gads4[9]:ARRAY OF LONG
  1174. sactive:=1
  1175. slider_levela:=col1r
  1176. slider_levelb:=col1g
  1177. slider_levelc:=col1b
  1178. ghostgadgets()
  1179.  
  1180. createAllGadgets4({glist4}, vi, topborder, my_gads4)  
  1181. mywin4:=OpenW(71,35,178,137,IDCMP_VANILLAKEY OR IDCMP_REFRESHWINDOW OR BUTTONIDCMP OR IDCMP_GADGETDOWN OR IDCMP_GADGETUP OR SLIDERIDCMP, WFLG_ACTIVATE OR WFLG_DRAGBAR, 'Colour Control', screen, $F, glist4, NIL)
  1182. SetTopaz(8) 
  1183. Gt_RefreshWindow(mywin4, NIL)
  1184. setlines()
  1185. drawcols()
  1186.  process_window_events4(mywin4, my_gads4)
  1187.  
  1188. EXCEPT DO  
  1189. IF mywin4 THEN CloseW(mywin4)
  1190.   FreeGadgets(glist4)
  1191.   ReThrow()
  1192. unghostgadgets()
  1193. ENDPROC
  1194.  
  1195. PROC createAllGadgets4(glistptr:PTR TO LONG, vi, topborder,
  1196.                       my_gads:PTR TO LONG)
  1197.   DEF ng:PTR TO newgadget
  1198.   gad4:=CreateContext(glistptr)
  1199.  
  1200.   ng:=[40, 20, 80, 12, '', topaz80,
  1201.        NIL, NIL, vi, 0]:newgadget
  1202.  
  1203.   ng.leftedge   := 39
  1204.   ng.topedge    := 68
  1205.   ng.width      := 100
  1206.   ng.height     := 12
  1207.   ng.gadgettext := '_R/r'
  1208.   ng.gadgetid   := MYGAD_SLIDER
  1209.   ng.flags      := PLACETEXT_RIGHT
  1210.   gad4:=CreateGadgetA(SLIDER_KIND, gad4, ng,
  1211.                                     [GTSL_MIN,         SLIDER_MIN,
  1212.                                      GTSL_MAX,         SLIDER_MAX,
  1213.                                      GTSL_LEVEL,       slider_levela,
  1214.                                      GTSL_LEVELFORMAT, '\d[3]',
  1215.                                      GTSL_MAXLEVELLEN, 10,
  1216.                                      GA_DISABLED,      FALSE,
  1217.                                      GT_UNDERSCORE,    "_",
  1218.                                      NIL])
  1219.  
  1220.   ng.leftedge   := 39
  1221.   ng.topedge    := 84
  1222.   ng.width      := 100
  1223.   ng.height     := 12
  1224.   ng.gadgettext := '_G/g'
  1225.   ng.gadgetid   := MYGAD_SLIDER2
  1226.   ng.flags      := PLACETEXT_RIGHT
  1227.   dslider2:=CreateGadgetA(SLIDER_KIND, gad4, ng,
  1228.                                     [GTSL_MIN,         SLIDER_MIN,
  1229.                                      GTSL_MAX,         SLIDER_MAX,
  1230.                                      GTSL_LEVEL,       slider_levelb,
  1231.                                      GTSL_LEVELFORMAT, '\d[3]',
  1232.                                      GTSL_MAXLEVELLEN, 10,
  1233.                                      GA_DISABLED,      FALSE,
  1234.                                      GT_UNDERSCORE,    "_",
  1235.                                      NIL])
  1236.  
  1237.   ng.leftedge   := 39
  1238.   ng.topedge    := 100
  1239.   ng.width      := 100
  1240.   ng.height     := 12
  1241.   ng.gadgettext := '_B/b'
  1242.   ng.gadgetid   := MYGAD_SLIDER3
  1243.   ng.flags      := PLACETEXT_RIGHT
  1244.   dslider3:=CreateGadgetA(SLIDER_KIND, dslider2, ng,
  1245.                                     [GTSL_MIN,         SLIDER_MIN,
  1246.                                      GTSL_MAX,         SLIDER_MAX,
  1247.                                      GTSL_LEVEL,       slider_levelc,
  1248.                                      GTSL_LEVELFORMAT, '\d[3]',
  1249.                                      GTSL_MAXLEVELLEN, 10,
  1250.                                      GA_DISABLED,      FALSE,
  1251.                                      GT_UNDERSCORE,    "_",
  1252.                                      NIL])
  1253.  
  1254.   ng.leftedge   := 8
  1255.   ng.topedge    := 116
  1256.   ng.width      := 79
  1257.   ng.height     := 15
  1258.   ng.gadgettext := '_Save'
  1259.   ng.gadgetid   := MYGAD4_BUTTON
  1260.   ng.flags      := 0
  1261.   dbutton:=CreateGadgetA(BUTTON_KIND, dslider3, ng, [GA_DISABLED, FALSE, GT_UNDERSCORE, "_"])
  1262.  
  1263.   ng.leftedge   := 91
  1264.   ng.topedge    := 116
  1265.   ng.width      := 79
  1266.   ng.height     := 15
  1267.   ng.gadgettext := '_Use'
  1268.   ng.gadgetid   := MYGAD4_BUTTON2
  1269.   ng.flags      := 0
  1270.   dbutton2:=CreateGadgetA(BUTTON_KIND, dbutton, ng, [GA_DISABLED, FALSE, GT_UNDERSCORE, "_"])
  1271.  
  1272.   ng.leftedge   := 20
  1273.   ng.topedge    := 52
  1274.   ng.width      := 21
  1275.   ng.height     := 12
  1276.   ng.gadgettext := '_1'
  1277.   ng.gadgetid   := MYGAD4_BUTTON3
  1278.   ng.flags      := 0
  1279.   dbutton3:=CreateGadgetA(BUTTON_KIND, dbutton2, ng, [GA_DISABLED, FALSE, GT_UNDERSCORE, "_"])
  1280.  
  1281.   ng.leftedge   := 58
  1282.   ng.topedge    := 52
  1283.   ng.width      := 21
  1284.   ng.height     := 12
  1285.   ng.gadgettext := '_2'
  1286.   ng.gadgetid   := MYGAD4_BUTTON4
  1287.   ng.flags      := 0
  1288.   dbutton4:=CreateGadgetA(BUTTON_KIND, dbutton3, ng, [GA_DISABLED, FALSE, GT_UNDERSCORE, "_"])
  1289.  
  1290.   ng.leftedge   := 98
  1291.   ng.topedge    := 52
  1292.   ng.width      := 21
  1293.   ng.height     := 12
  1294.   ng.gadgettext := '_3'
  1295.   ng.gadgetid   := MYGAD4_BUTTON5
  1296.   ng.flags      := 0
  1297.   dbutton5:=CreateGadgetA(BUTTON_KIND, dbutton4, ng, [GA_DISABLED, FALSE, GT_UNDERSCORE, "_"])
  1298.  
  1299.   ng.leftedge   := 138
  1300.   ng.topedge    := 52
  1301.   ng.width      := 21
  1302.   ng.height     := 12
  1303.   ng.gadgettext := '_4'
  1304.   ng.gadgetid   := MYGAD4_BUTTON6
  1305.   ng.flags      := 0
  1306.   dbutton6:=CreateGadgetA(BUTTON_KIND, dbutton5, ng, [GA_DISABLED, FALSE, GT_UNDERSCORE, "_"])
  1307.  
  1308. ENDPROC(gad4)
  1309.  
  1310. PROC process_window_events4(mywin4:PTR TO window, my_gads4:PTR TO LONG)
  1311.  
  1312.   DEF imsg:PTR TO intuimessage, imsgClass, imsgCode, gad4
  1313.  
  1314.   REPEAT
  1315.     Wait(Shl(1, mywin4.userport.sigbit))
  1316.     WHILE (terminated4=FALSE) AND (imsg:=Gt_GetIMsg(mywin4.userport))
  1317.       gad4:=imsg.iaddress
  1318.  
  1319.       imsgClass:=imsg.class
  1320.       imsgCode:=imsg.code
  1321.  
  1322.       Gt_ReplyIMsg(imsg)
  1323.  
  1324.       SELECT imsgClass
  1325.       CASE IDCMP_GADGETDOWN
  1326.         handleGadgetEvent4(mywin4, gad4, imsgCode, my_gads4)
  1327.       CASE IDCMP_MOUSEMOVE
  1328.         handleGadgetEvent4(mywin4, gad4, imsgCode, my_gads4)
  1329.       CASE IDCMP_GADGETUP
  1330.         handleGadgetEvent4(mywin4, gad4, imsgCode, my_gads4)
  1331.       CASE IDCMP_VANILLAKEY
  1332.         handleVanillaKey4(mywin4, imsgCode, my_gads4)
  1333.       CASE IDCMP_REFRESHWINDOW
  1334.         Gt_BeginRefresh(mywin4)
  1335.         Gt_EndRefresh(mywin4, TRUE)
  1336.       ENDSELECT
  1337. SetColour(screen,4,col1r,col1g,col1b)
  1338. SetColour(screen,5,col2r,col2g,col2b)
  1339. SetColour(screen,6,col3r,col3g,col3b)
  1340. SetColour(screen,7,col4r,col4g,col4b)
  1341.  
  1342.  ENDWHILE
  1343.   UNTIL terminated4
  1344. ENDPROC
  1345.  
  1346. PROC handleGadgetEvent4(win, gad:PTR TO gadget, code,
  1347.                        my_gads:PTR TO LONG)
  1348.   DEF id
  1349. IF sactive=1 THEN (col1r:=slider_levela) AND (col1g:=slider_levelb) AND (col1b:=slider_levelc)
  1350. IF sactive=2 THEN (col2r:=slider_levela) AND (col2g:=slider_levelb) AND (col2b:=slider_levelc)
  1351. IF sactive=3 THEN (col3r:=slider_levela) AND (col3g:=slider_levelb) AND (col3b:=slider_levelc)
  1352. IF sactive=4 THEN (col4r:=slider_levela) AND (col4g:=slider_levelb) AND (col4b:=slider_levelc)
  1353.   id:=gad.gadgetid
  1354.   SELECT id
  1355. CASE MYGAD4_BUTTON3
  1356. sactive:=1
  1357. slider_levela:=col1r
  1358. slider_levelb:=col1g
  1359. slider_levelc:=col1b
  1360.  Gt_SetGadgetAttrsA(gad4, mywin4, NIL, [GTSL_LEVEL, slider_levela, NIL])
  1361.  Gt_SetGadgetAttrsA(dslider2, mywin4, NIL, [GTSL_LEVEL, slider_levelb, NIL])
  1362.  Gt_SetGadgetAttrsA(dslider3, mywin4, NIL, [GTSL_LEVEL, slider_levelc, NIL])
  1363.   DrawBorder(mywin4.rport, shadowBorder, 12, 15)
  1364.   DrawBorder(mywin4.rport, shadowBorderC, 52, 15)
  1365.   DrawBorder(mywin4.rport, shadowBorderC, 92, 15)
  1366.   DrawBorder(mywin4.rport, shadowBorderC, 132, 15)
  1367. CASE MYGAD4_BUTTON4
  1368. sactive:=2
  1369. slider_levela:=col2r
  1370. slider_levelb:=col2g
  1371. slider_levelc:=col2b
  1372.  Gt_SetGadgetAttrsA(gad4, mywin4, NIL, [GTSL_LEVEL, slider_levela, NIL])
  1373.  Gt_SetGadgetAttrsA(dslider2, mywin4, NIL, [GTSL_LEVEL, slider_levelb, NIL])
  1374.  Gt_SetGadgetAttrsA(dslider3, mywin4, NIL, [GTSL_LEVEL, slider_levelc, NIL])
  1375.   DrawBorder(mywin4.rport, shadowBorderC, 12, 15)
  1376.   DrawBorder(mywin4.rport, shadowBorder, 52, 15)
  1377.   DrawBorder(mywin4.rport, shadowBorderC, 92, 15)
  1378.   DrawBorder(mywin4.rport, shadowBorderC, 132, 15)
  1379. CASE MYGAD4_BUTTON5
  1380. sactive:=3
  1381. slider_levela:=col3r
  1382. slider_levelb:=col3g
  1383. slider_levelc:=col3b
  1384.  Gt_SetGadgetAttrsA(gad4, mywin4, NIL, [GTSL_LEVEL, slider_levela, NIL])
  1385.  Gt_SetGadgetAttrsA(dslider2, mywin4, NIL, [GTSL_LEVEL, slider_levelb, NIL])
  1386.  Gt_SetGadgetAttrsA(dslider3, mywin4, NIL, [GTSL_LEVEL, slider_levelc, NIL])
  1387.     DrawBorder(mywin4.rport, shadowBorderC, 12, 15)
  1388.   DrawBorder(mywin4.rport, shadowBorderC, 52, 15)
  1389.   DrawBorder(mywin4.rport, shadowBorder, 92, 15)
  1390.   DrawBorder(mywin4.rport, shadowBorderC, 132, 15)
  1391. CASE MYGAD4_BUTTON6
  1392. sactive:=4
  1393. slider_levela:=col4r
  1394. slider_levelb:=col4g
  1395. slider_levelc:=col4b
  1396.  Gt_SetGadgetAttrsA(gad4, mywin4, NIL, [GTSL_LEVEL, slider_levela, NIL])
  1397.  Gt_SetGadgetAttrsA(dslider2, mywin4, NIL, [GTSL_LEVEL, slider_levelb, NIL])
  1398.  Gt_SetGadgetAttrsA(dslider3, mywin4, NIL, [GTSL_LEVEL, slider_levelc, NIL])
  1399.   
  1400.     DrawBorder(mywin4.rport, shadowBorderC, 12, 15)
  1401.   DrawBorder(mywin4.rport, shadowBorderC, 52, 15)
  1402.   DrawBorder(mywin4.rport, shadowBorderC, 92, 15)
  1403.   DrawBorder(mywin4.rport, shadowBorder, 132, 15)
  1404.  
  1405.    CASE MYGAD4_BUTTON
  1406. saveprefs()
  1407.   terminated4:=TRUE
  1408. CASE MYGAD4_BUTTON2
  1409.   terminated4:=TRUE
  1410.   CASE MYGAD_SLIDER
  1411. slider_levela:=code
  1412.   CASE MYGAD_SLIDER2
  1413. slider_levelb:=code
  1414.   CASE MYGAD_SLIDER3
  1415.     slider_levelc:=code
  1416.   ENDSELECT
  1417. ENDPROC
  1418.  
  1419. PROC handleVanillaKey4(win, code, my_gads:PTR TO LONG)
  1420. IF sactive=1 THEN (col1r:=slider_levela) AND (col1g:=slider_levelb) AND (col1b:=slider_levelc)
  1421. IF sactive=2 THEN (col2r:=slider_levela) AND (col2g:=slider_levelb) AND (col2b:=slider_levelc)
  1422. IF sactive=3 THEN (col3r:=slider_levela) AND (col3g:=slider_levelb) AND (col3b:=slider_levelc)
  1423. IF sactive=4 THEN (col4r:=slider_levela) AND (col4g:=slider_levelb) AND (col4b:=slider_levelc)
  1424.   SELECT "w" OF code
  1425.   CASE "R"
  1426. IF slider_levela<255 THEN slider_levela:=slider_levela+1
  1427.     Gt_SetGadgetAttrsA(gad4, mywin4, NIL,
  1428.                       [GTSL_LEVEL, slider_levela, NIL])
  1429.  
  1430.   CASE "r"
  1431. IF slider_levela>0 THEN slider_levela:=slider_levela-1    
  1432. Gt_SetGadgetAttrsA(gad4, mywin4, NIL,
  1433.                       [GTSL_LEVEL, slider_levela, NIL])
  1434.  
  1435.   CASE "G"
  1436. IF slider_levelb<255 THEN slider_levelb:=slider_levelb+1
  1437.     Gt_SetGadgetAttrsA(dslider2, mywin4, NIL,
  1438.                       [GTSL_LEVEL, slider_levelb, NIL])
  1439.  
  1440.   CASE "g"
  1441. IF slider_levelb>0 THEN slider_levelb:=slider_levelb-1    
  1442.     Gt_SetGadgetAttrsA(dslider2, mywin4, NIL,
  1443.                       [GTSL_LEVEL, slider_levelb, NIL])
  1444.  
  1445.   CASE "B"
  1446. IF slider_levelc<255 THEN slider_levelc:=slider_levelc+1
  1447.     Gt_SetGadgetAttrsA(dslider3, mywin4, NIL,
  1448.                       [GTSL_LEVEL, slider_levelc, NIL])
  1449.   CASE "b"
  1450. IF slider_levelc>0 THEN slider_levelc:=slider_levelc-1    
  1451.     Gt_SetGadgetAttrsA(dslider3, mywin4, NIL,
  1452.                       [GTSL_LEVEL, slider_levelc, NIL])
  1453.  
  1454. CASE "s", "S"
  1455.   terminated4:=TRUE
  1456. saveprefs()
  1457. CASE "u", "U"
  1458. terminated4:=TRUE
  1459. CASE "1"
  1460. sactive:=1
  1461. slider_levela:=col1r
  1462. slider_levelb:=col1g
  1463. slider_levelc:=col1b
  1464.  Gt_SetGadgetAttrsA(gad4, mywin4, NIL, [GTSL_LEVEL, slider_levela, NIL])
  1465.  Gt_SetGadgetAttrsA(dslider2, mywin4, NIL, [GTSL_LEVEL, slider_levelb, NIL])
  1466.  Gt_SetGadgetAttrsA(dslider3, mywin4, NIL, [GTSL_LEVEL, slider_levelc, NIL])
  1467.   
  1468.     DrawBorder(mywin4.rport, shadowBorder, 12, 15)
  1469.   DrawBorder(mywin4.rport, shadowBorderC, 52, 15)
  1470.   DrawBorder(mywin4.rport, shadowBorderC, 92, 15)
  1471.   DrawBorder(mywin4.rport, shadowBorderC, 132, 15)
  1472. CASE "2"
  1473. sactive:=2
  1474. slider_levela:=col2r
  1475. slider_levelb:=col2g
  1476. slider_levelc:=col2b
  1477.  Gt_SetGadgetAttrsA(gad4, mywin4, NIL, [GTSL_LEVEL, slider_levela, NIL])
  1478.  Gt_SetGadgetAttrsA(dslider2, mywin4, NIL, [GTSL_LEVEL, slider_levelb, NIL])
  1479.  Gt_SetGadgetAttrsA(dslider3, mywin4, NIL, [GTSL_LEVEL, slider_levelc, NIL])
  1480.     DrawBorder(mywin4.rport, shadowBorderC, 12, 15)
  1481.   DrawBorder(mywin4.rport, shadowBorder, 52, 15)
  1482.   DrawBorder(mywin4.rport, shadowBorderC, 92, 15)
  1483.   DrawBorder(mywin4.rport, shadowBorderC, 132, 15)
  1484.   
  1485. CASE "3"
  1486. sactive:=3
  1487. slider_levela:=col3r
  1488. slider_levelb:=col3g
  1489. slider_levelc:=col3b
  1490.  Gt_SetGadgetAttrsA(gad4, mywin4, NIL, [GTSL_LEVEL, slider_levela, NIL])
  1491.  Gt_SetGadgetAttrsA(dslider2, mywin4, NIL, [GTSL_LEVEL, slider_levelb, NIL])
  1492.  Gt_SetGadgetAttrsA(dslider3, mywin4, NIL, [GTSL_LEVEL, slider_levelc, NIL])
  1493.   
  1494.     DrawBorder(mywin4.rport, shadowBorderC, 12, 15)
  1495.   DrawBorder(mywin4.rport, shadowBorderC, 52, 15)
  1496.   DrawBorder(mywin4.rport, shadowBorder, 92, 15)
  1497.   DrawBorder(mywin4.rport, shadowBorderC, 132, 15)
  1498. CASE "4"
  1499. sactive:=4
  1500. slider_levela:=col4r
  1501. slider_levelb:=col4g
  1502. slider_levelc:=col4b
  1503.  Gt_SetGadgetAttrsA(gad4, mywin4, NIL, [GTSL_LEVEL, slider_levela, NIL])
  1504.  Gt_SetGadgetAttrsA(dslider2, mywin4, NIL, [GTSL_LEVEL, slider_levelb, NIL])
  1505.  Gt_SetGadgetAttrsA(dslider3, mywin4, NIL, [GTSL_LEVEL, slider_levelc, NIL])
  1506.   
  1507.     DrawBorder(mywin4.rport, shadowBorderC, 12, 15)
  1508.   DrawBorder(mywin4.rport, shadowBorderC, 52, 15)
  1509.   DrawBorder(mywin4.rport, shadowBorderC, 92, 15)
  1510.   DrawBorder(mywin4.rport, shadowBorder, 132, 15)
  1511.  
  1512.   ENDSELECT
  1513. ENDPROC
  1514.  
  1515. PROC scorecard() HANDLE
  1516.   DEF glist5=NIL, mywin5=NIL:PTR TO window, my_gads5[6]:ARRAY OF LONG,
  1517.   gad5y1=28, lineloop5, posloop=0,
  1518. posfound=4, rank1, rank2, rank3, rank4, play[3]:STRING, 
  1519.  p1x1=53, p1x2, p2x1=53, p2x2, p3x1=53, p3x2, p4x1=53, p4x2
  1520.   createAllGadgets5({glist5}, vi, topborder, my_gads5)
  1521.   mywin5:=OpenW(77,53,164,113,IDCMP_VANILLAKEY OR IDCMP_REFRESHWINDOW OR BUTTONIDCMP OR IDCMP_GADGETDOWN OR IDCMP_GADGETUP, WFLG_ACTIVATE OR WFLG_DRAGBAR, 'Score Card', screen, $F, glist5, NIL)
  1522.   SetTopaz(8)
  1523. blocked5:=FALSE
  1524. FOR lineloop5:=1 TO 4
  1525. Line(33,gad5y1+1,33,gad5y1+10,1)
  1526. Line(32,gad5y1+1,32,gad5y1+11,1)
  1527. Line(32,gad5y1,110,gad5y1,1)
  1528. Line(110,gad5y1+1,110,gad5y1+10,2)
  1529. Line(111,gad5y1,111,gad5y1+10,2)
  1530. Line(33,gad5y1+11,111,gad5y1+11,2)
  1531.  
  1532. Line(117,gad5y1+1,117,gad5y1+10,1)
  1533. Line(116,gad5y1+1,116,gad5y1+11,1)
  1534. Line(116,gad5y1,154,gad5y1,1)
  1535. Line(154,gad5y1+1,154,gad5y1+10,2)
  1536. Line(155,gad5y1,155,gad5y1+10,2)
  1537. Line(117,gad5y1+11,155,gad5y1+11,2)
  1538. gad5y1:=gad5y1+16
  1539. ENDFOR
  1540.  
  1541. Colour(2)
  1542. TextF(7,22,'Pos')
  1543. TextF(48,22,'Player')
  1544. TextF(121,22,'Wins')
  1545. Colour(1)
  1546. TextF(11,36,'1:')
  1547. TextF(11,52,'2:')
  1548. TextF(11,68,'3:')
  1549. TextF(11,84,'4:')
  1550.  
  1551. Colour(3)
  1552. REPEAT
  1553. IF posloop=play4 THEN (rank4:=posfound) AND (posfound:=posfound-1)
  1554. IF posloop=play3 THEN (rank3:=posfound) AND (posfound:=posfound-1)
  1555. IF posloop=play2 THEN (rank2:=posfound) AND (posfound:=posfound-1)
  1556. IF posloop=play1 THEN (rank1:=posfound) AND (posfound:=posfound-1)
  1557. posloop:=posloop+1
  1558. UNTIL (posfound=0) OR (posloop=1000)
  1559.  
  1560. IF posloop=1000 THEN (blocked5:=TRUE) AND (Gt_SetGadgetAttrsA(ebutton, mywin5, NIL, [GA_DISABLED, TRUE, NIL]))
  1561. IF StrLen(name1)=7 THEN p1x1:=45
  1562. IF StrLen(name2)=7 THEN p2x1:=45
  1563. IF StrLen(name3)=7 THEN p3x1:=45
  1564. IF StrLen(name4)=7 THEN p4x1:=45
  1565. IF StrLen(name1)=6 THEN p1x1:=49
  1566. IF StrLen(name2)=6 THEN p2x1:=49
  1567. IF StrLen(name3)=6 THEN p3x1:=49
  1568. IF StrLen(name4)=6 THEN p4x1:=49
  1569. IF StrLen(name1)=5 THEN p1x1:=53
  1570. IF StrLen(name2)=5 THEN p2x1:=53
  1571. IF StrLen(name3)=5 THEN p3x1:=53
  1572. IF StrLen(name4)=5 THEN p4x1:=53
  1573. IF StrLen(name1)=4 THEN p1x1:=57
  1574. IF StrLen(name2)=4 THEN p2x1:=57
  1575. IF StrLen(name3)=4 THEN p3x1:=57
  1576. IF StrLen(name4)=4 THEN p4x1:=57
  1577. IF StrLen(name1)=3 THEN p1x1:=61
  1578. IF StrLen(name2)=3 THEN p2x1:=61
  1579. IF StrLen(name3)=3 THEN p3x1:=61
  1580. IF StrLen(name4)=3 THEN p4x1:=61
  1581. IF StrLen(name1)=2 THEN p1x1:=65
  1582. IF StrLen(name2)=2 THEN p2x1:=65
  1583. IF StrLen(name3)=2 THEN p3x1:=65
  1584. IF StrLen(name4)=2 THEN p4x1:=65
  1585. IF StrLen(name1)=1 THEN p1x1:=69
  1586. IF StrLen(name2)=1 THEN p2x1:=69
  1587. IF StrLen(name3)=1 THEN p3x1:=69
  1588. IF StrLen(name4)=1 THEN p4x1:=69
  1589. IF play1<10 THEN p1x2:=132
  1590. IF play2<10 THEN p2x2:=132 
  1591. IF play3<10 THEN p3x2:=132 
  1592. IF play4<10 THEN p4x2:=132
  1593. IF (play1>9) AND (play1<100) THEN p1x2:=128
  1594. IF (play2>9) AND (play2<100) THEN p2x2:=128
  1595. IF (play3>9) AND (play3<100) THEN p3x2:=128
  1596. IF (play4>9) AND (play4<100) THEN p4x2:=128
  1597. IF (play1>99) THEN p1x2:=124
  1598. IF (play2>99) THEN p2x2:=124
  1599. IF (play3>99) THEN p3x2:=124
  1600. IF (play4>99) THEN p4x2:=124
  1601.  
  1602. IF rank1=1 
  1603. TextF(p1x1,36,name1)
  1604. StringF(play,'\d',play1)
  1605. TextF(p1x2,36,play)
  1606. ENDIF
  1607.  
  1608. IF rank2=1 
  1609. TextF(p2x1,36,name2)
  1610. StringF(play,'\d',play2)
  1611. TextF(p2x2,36,play)
  1612. ENDIF
  1613.  
  1614. IF rank3=1 
  1615. TextF(p3x1,36,name3)
  1616. StringF(play,'\d',play3)
  1617. TextF(p3x2,36,play)
  1618. ENDIF
  1619. IF rank4=1 
  1620. TextF(p4x1,36,name4)
  1621. StringF(play,'\d',play4)
  1622. TextF(p4x2,36,play)
  1623. ENDIF
  1624.  
  1625. IF rank1=2 
  1626. TextF(p1x1,52,name1)
  1627. StringF(play,'\d',play1)
  1628. TextF(p1x2,52,play)
  1629. ENDIF
  1630. IF rank2=2 
  1631. TextF(p2x1,52,name2)
  1632. StringF(play,'\d',play2)
  1633. TextF(p2x2,52,play)
  1634. ENDIF
  1635. IF rank3=2 
  1636. TextF(p3x1,52,name3)
  1637. StringF(play,'\d',play3)
  1638. TextF(p3x2,52,play)
  1639. ENDIF
  1640. IF rank4=2 
  1641. TextF(p4x1,52,name4)
  1642. StringF(play,'\d',play4)
  1643. TextF(p4x2,52,play)
  1644. ENDIF
  1645.  
  1646. IF rank1=3 
  1647. TextF(p1x1,68,name1)
  1648. StringF(play,'\d',play1)
  1649. TextF(p1x2,68,play)
  1650. ENDIF
  1651. IF rank2=3 
  1652. TextF(p2x1,68,name2)
  1653. StringF(play,'\d',play2)
  1654. TextF(p2x2,68,play)
  1655. ENDIF
  1656. IF rank3=3 
  1657. TextF(p3x1,68,name3)
  1658. StringF(play,'\d',play3)
  1659. TextF(p3x2,68,play)
  1660. ENDIF
  1661. IF rank4=3 
  1662. TextF(p4x1,68,name4)
  1663. StringF(play,'\d',play4)
  1664. TextF(p4x2,68,play)
  1665. ENDIF
  1666.  
  1667. IF rank1=4 
  1668. TextF(p1x1,84,name1)
  1669. StringF(play,'\d',play1)
  1670. TextF(p1x2,84,play)
  1671. ENDIF
  1672. IF rank2=4 
  1673. TextF(p2x1,84,name2)
  1674. StringF(play,'\d',play2)
  1675. TextF(p2x2,84,play)
  1676. ENDIF
  1677. IF rank3=4 
  1678. TextF(p3x1,84,name3)
  1679. StringF(play,'\d',play3)
  1680. TextF(p3x2,84,play)
  1681. ENDIF
  1682. IF rank4=4 
  1683. TextF(p4x1,84,name4)
  1684. StringF(play,'\d',play4)
  1685. TextF(p4x2,84,play)
  1686. ENDIF
  1687.  
  1688.   process_window_events5(mywin5, my_gads5)
  1689.  
  1690. EXCEPT DO  
  1691. IF mywin5 THEN CloseW(mywin5)
  1692.   FreeGadgets(glist5)
  1693.   ReThrow()
  1694. ENDPROC
  1695.  
  1696.  
  1697. PROC createAllGadgets5(glistptr:PTR TO LONG, vi, topborder,
  1698.                       my_gads:PTR TO LONG)
  1699.   DEF ng:PTR TO newgadget
  1700.  
  1701.   gad5:=CreateContext(glistptr)
  1702.  
  1703.   ng:=[140, (20+topborder), 200, 12, '_Volume:   ', topaz80,
  1704.         NIL, NG_HIGHLABEL, vi, 0]:newgadget
  1705.  
  1706.   ng.leftedge   := 8
  1707.   ng.topedge    := 92
  1708.   ng.width      := 72
  1709.   ng.height     := 15
  1710.   ng.gadgettext := '_Play'
  1711.   ng.gadgetid   := MYGAD5_BUTTON2
  1712.   ng.flags      := PLACETEXT_IN
  1713.   ebutton:=CreateGadgetA(BUTTON_KIND, gad5, ng, [GA_DISABLED, FALSE, GT_UNDERSCORE, "_"])
  1714.  
  1715.   ng.leftedge   := 84
  1716.   ng.topedge    := 92
  1717.   ng.width      := 72
  1718.   ng.height     := 15
  1719.   ng.gadgettext := '_Quit'
  1720.   ng.gadgetid   := MYGAD5_BUTTON
  1721.   ng.flags      := PLACETEXT_IN
  1722.   ebutton2:=CreateGadgetA(BUTTON_KIND, ebutton, ng, [GA_DISABLED, FALSE, GT_UNDERSCORE, "_"])
  1723.  
  1724. ENDPROC(gad5)
  1725.  
  1726. PROC process_window_events5(mywin5:PTR TO window, my_gads5:PTR TO LONG)
  1727.   DEF imsg:PTR TO intuimessage, imsgClass, imsgCode, gad5
  1728.   REPEAT
  1729.     Wait(Shl(1, mywin5.userport.sigbit))
  1730.     WHILE (terminated5=FALSE) AND (imsg:=Gt_GetIMsg(mywin5.userport))
  1731.       gad5:=imsg.iaddress
  1732.  
  1733.       imsgClass:=imsg.class
  1734.       imsgCode:=imsg.code
  1735.  
  1736.       Gt_ReplyIMsg(imsg)
  1737.  
  1738.       SELECT imsgClass
  1739.       CASE IDCMP_GADGETDOWN
  1740.         handleGadgetEvent5(mywin5, gad5, imsgCode, my_gads5)
  1741.       CASE IDCMP_GADGETUP
  1742.         handleGadgetEvent5(mywin5, gad5, imsgCode, my_gads5)
  1743.       CASE IDCMP_VANILLAKEY
  1744.         handleVanillaKey5(mywin5, imsgCode, my_gads5)
  1745.       CASE IDCMP_REFRESHWINDOW
  1746.         Gt_BeginRefresh(mywin5)
  1747.         Gt_EndRefresh(mywin5, TRUE)
  1748.       ENDSELECT
  1749.  
  1750.  ENDWHILE
  1751.   UNTIL terminated5
  1752. ENDPROC
  1753.  
  1754. PROC handleGadgetEvent5(win, gad:PTR TO gadget, code,
  1755.                        my_gads:PTR TO LONG)
  1756.   DEF id
  1757.   id:=gad.gadgetid
  1758.   SELECT id
  1759. CASE MYGAD5_BUTTON
  1760. terminated5:=TRUE
  1761. CASE MYGAD5_BUTTON2
  1762. terminated5:=TRUE
  1763. playon:=TRUE
  1764. ENDSELECT
  1765. ENDPROC
  1766.  
  1767. PROC handleVanillaKey5(win, code, my_gads:PTR TO LONG)
  1768.   SELECT "w" OF code
  1769.   CASE "Q", "q"
  1770. terminated5:=TRUE
  1771.   CASE "P", "p"
  1772. IF blocked5=FALSE
  1773. terminated5:=TRUE
  1774. playon:=TRUE
  1775. ENDIF
  1776. ENDSELECT
  1777. ENDPROC
  1778.  
  1779. PROC saveprefs() HANDLE
  1780. DEF savedata[500]:STRING,length, csol1r[3]:STRING, csol1g[3]:STRING, csol1b[3]:STRING, csol2r[3]:STRING, csol2g[3]:STRING, csol2b[3]:STRING, csol3r[3]:STRING, csol3g[3]:STRING, csol3b[3]:STRING, csol4r[3]:STRING, csol4g[3]:STRING, csol4b[3]:STRING, cputemp[3]:STRING
  1781.  
  1782. StringF(csol1r,'\d',col1r)
  1783. StringF(csol1g,'\d',col1g)
  1784. StringF(csol1b,'\d',col1b)
  1785. StringF(csol2r,'\d',col2r)
  1786. StringF(csol2g,'\d',col2g)
  1787. StringF(csol2b,'\d',col2b)
  1788. StringF(csol3r,'\d',col3r)
  1789. StringF(csol3g,'\d',col3g)
  1790. StringF(csol3b,'\d',col3b)
  1791. StringF(csol4r,'\d',col4r)
  1792. StringF(csol4g,'\d',col4g)
  1793. StringF(csol4b,'\d',col4b)
  1794. StringF(cputemp,'\d',stupid)
  1795.  
  1796. StringF(savedata,'Game:\d\d\d\d\nPlayer:\d\d\d\d\nNo:\d\nCol1:\s,\s,\s\nCol2:\s,\s,\s\nCol3:\s,\s,\s\nCol4:\s,\s,\s\nName1:\s\nName2:\s\nName3:\s\nName4:\s\nSwoo:\d\nCpu:\s\n\nLightSpeed2 Copyright © 1998 Micro Design (Richard West & Daniel Pimley)\n\nend.',accelaration,obstacles+2,wrap+2,blocks+2,play1control,play2control,play3control,play4control,playerno, csol1r, csol1g, csol1b, csol2r, csol2g, csol2b, csol3r, csol3g, csol3b, csol4r,  csol4g, csol4b, tname1, tname2, tname3, tname4, swooshy+2, cputemp)
  1797.  
  1798. length:=StrLen(savedata)
  1799. writefile('PROGDIR:light.prefs',savedata,length)
  1800. EXCEPT DO
  1801. IF exception
  1802.    request(' Could Not Save Prefs File\n\n(Disk/File Write Protected?)',1,'Continue')
  1803. ENDIF
  1804. ENDPROC
  1805.  
  1806. PROC loadprefs()
  1807. DEF m,l,n,list,ioerror=0,temp[1]:STRING,a,temppal[4]:STRING,  temppal2[4]:STRING, counta=0,
  1808. countb=0, countc, lenplea
  1809. m,l:=readfile('PROGDIR:light.prefs')
  1810.   n:=countstrings(m,l)
  1811.   list:=stringsinfile(m,l,n)
  1812. IF StrCmp(m,'Game:',5)=FALSE THEN ioerror:=5
  1813. IF Not (StrLen(m)=9) THEN ioerror:=5
  1814. IF ioerror=0
  1815. MidStr(temp,m,5,1)
  1816. accelaration:=Val(temp, NIL)
  1817. MidStr(temp,m,6,1)
  1818. IF StrCmp(temp,'1',1) THEN obstacles:=TRUE ELSE obstacles:=FALSE
  1819. MidStr(temp,m,7,1)
  1820. IF StrCmp(temp,'1',1) THEN wrap:=TRUE ELSE wrap:=FALSE
  1821. MidStr(temp,m,8,1)
  1822. IF StrCmp(temp,'1',1) THEN blocks:=TRUE ELSE blocks:=FALSE
  1823. m:=m+10
  1824. IF StrCmp(m,'Player:',7)=FALSE THEN JUMP ioerr
  1825. IF Not (StrLen(m)=11) THEN JUMP ioerr
  1826. MidStr(temp,m,7,1)
  1827. play1control:=Val(temp, NIL)
  1828. MidStr(temp,m,8,1)
  1829. play2control:=Val(temp, NIL)
  1830. MidStr(temp,m,9,1)
  1831. play3control:=Val(temp, NIL)
  1832. MidStr(temp,m,10,1)
  1833. play4control:=Val(temp, NIL)
  1834. IF (play1control=play2control) OR (play1control=play2control) OR (play1control=play3control) OR (play1control=play4control) OR (play2control=play3control) OR (play4control=play2control) OR (play3control=play4control) THEN JUMP ioerr
  1835. m:=m+12
  1836.  
  1837. IF StrCmp(m,'No:',3)=FALSE THEN JUMP ioerr
  1838. IF Not (StrLen(m)=4) THEN JUMP ioerr
  1839. MidStr(temp,m,3,1)
  1840. playerno:=Val(temp, NIL)
  1841.  
  1842. counta:=0
  1843. countb:=0
  1844. m:=m+5
  1845. IF StrCmp(m,'Col1:',5)=FALSE THEN JUMP ioerr
  1846. m:=m+5
  1847. counta:=InStr(m,',')
  1848. MidStr(temppal,m,0,counta)
  1849. col1r:=Val(temppal, NIL)
  1850. m:=m+counta+1
  1851. counta:=InStr(m,',')
  1852. MidStr(temppal,m,0,counta)
  1853. col1g:=Val(temppal, NIL)
  1854. m:=m+counta+1
  1855. counta:=StrLen(m)
  1856. MidStr(temppal,m,0,counta)
  1857. col1b:=Val(temppal, NIL)
  1858. m:=m+counta+1
  1859.  
  1860.  
  1861. IF StrCmp(m,'Col2:',5)=FALSE THEN JUMP ioerr
  1862. m:=m+5
  1863. counta:=InStr(m,',')
  1864. MidStr(temppal,m,0,counta)
  1865. col2r:=Val(temppal, NIL)
  1866. m:=m+counta+1
  1867. counta:=InStr(m,',')
  1868. MidStr(temppal,m,0,counta)
  1869. col2g:=Val(temppal, NIL)
  1870. m:=m+counta+1
  1871. counta:=StrLen(m)
  1872. MidStr(temppal,m,0,counta)
  1873. col2b:=Val(temppal, NIL)
  1874. m:=m+counta+1
  1875.  
  1876. IF StrCmp(m,'Col3:',5)=FALSE THEN JUMP ioerr
  1877. m:=m+5
  1878. counta:=InStr(m,',')
  1879. MidStr(temppal,m,0,counta)
  1880. col3r:=Val(temppal, NIL)
  1881. m:=m+counta+1
  1882. counta:=InStr(m,',')
  1883. MidStr(temppal,m,0,counta)
  1884. col3g:=Val(temppal, NIL)
  1885. m:=m+counta+1
  1886. counta:=StrLen(m)
  1887. MidStr(temppal,m,0,counta)
  1888. col3b:=Val(temppal, NIL)
  1889. m:=m+counta+1
  1890.  
  1891. IF StrCmp(m,'Col4:',5)=FALSE THEN JUMP ioerr
  1892. m:=m+5
  1893. counta:=InStr(m,',')
  1894. MidStr(temppal,m,0,counta)
  1895. col4r:=Val(temppal, NIL)
  1896. m:=m+counta+1
  1897. counta:=InStr(m,',')
  1898. MidStr(temppal,m,0,counta)
  1899. col4g:=Val(temppal, NIL)
  1900. m:=m+counta+1
  1901. counta:=StrLen(m)
  1902. MidStr(temppal,m,0,counta)
  1903. col4b:=Val(temppal, NIL)
  1904. m:=m+counta+1
  1905.  
  1906.  
  1907. IF StrCmp(m,'Name1:',6)=FALSE THEN JUMP ioerr
  1908. lenplea:=StrLen(m)
  1909. IF lenplea>13 THEN JUMP ioerr
  1910. MidStr(tname1,m,6,lenplea)
  1911. m:=m+lenplea+1
  1912. IF StrCmp(m,'Name2:',6)=FALSE THEN JUMP ioerr
  1913. lenplea:=StrLen(m)
  1914. IF lenplea>13 THEN JUMP ioerr
  1915. MidStr(tname2,m,6,lenplea)
  1916. m:=m+lenplea+1
  1917. IF StrCmp(m,'Name3:',6)=FALSE THEN JUMP ioerr
  1918. lenplea:=StrLen(m)
  1919. IF lenplea>13 THEN JUMP ioerr
  1920. MidStr(tname3,m,6,lenplea)
  1921. m:=m+lenplea+1
  1922. IF StrCmp(m,'Name4:',6)=FALSE THEN JUMP ioerr
  1923. lenplea:=StrLen(m)
  1924. IF lenplea>13 THEN JUMP ioerr
  1925. MidStr(tname4,m,6,lenplea)
  1926. m:=m+lenplea+1
  1927. IF StrCmp(m,'Swoo:',5)=FALSE THEN JUMP ioerr
  1928. MidStr(temp,m,5,1)
  1929. IF StrCmp(temp,'1',ALL)=TRUE THEN swooshy:=TRUE ELSE swooshy:=FALSE
  1930. m:=m+7
  1931.  
  1932. IF StrCmp(m,'Cpu:',4)=FALSE THEN JUMP ioerr
  1933. MidStr(temppal,m,4,StrLen(m))
  1934. stupid:=Val(temppal,NIL)
  1935. sliderb_level:=stupid
  1936.  
  1937. ELSE
  1938. ioerr:
  1939. col1r:=255 ; col1g:=255 ; col1b:=255
  1940. col2r:=255 ; col2g:=255 ; col2b:=165
  1941. col3r:=165 ; col3g:=255 ; col3b:=165
  1942. col4r:=255 ; col4g:=180 ; col4b:=180
  1943. swooshy:=TRUE
  1944. stupid:=70
  1945. playerno:=0
  1946. wrap:=TRUE
  1947. obstacles:=TRUE
  1948. blocks:=FALSE
  1949. accelaration:=1
  1950. play1control:=0
  1951. play2control:=1
  1952. play3control:=2
  1953. play4control:=3
  1954. StringF(tname1,'Jam') 
  1955. StringF(tname2,'Custard')
  1956. StringF(tname3,'Syrup')
  1957. StringF(tname4,'Treacle')
  1958. ENDIF
  1959. ENDPROC
  1960.  
  1961. PROC ghostgadgets()
  1962. InitRequester(myreq)
  1963. IF Request(myreq, mywin)
  1964.  RETURN TRUE
  1965. ELSE
  1966.  RETURN FALSE
  1967. ENDIF
  1968. ENDPROC
  1969.  
  1970. PROC unghostgadgets()
  1971. EndRequest(myreq, mywin)
  1972. ENDPROC
  1973.  
  1974. PROC drawcols()
  1975.   shineBorder:=[0, 0, 2, 0,
  1976.                 RP_JAM1, 5, [0,0, 31,0, 31,31, 0,31, 0,0]:INT,
  1977.                 NIL]:border
  1978.   shadowBorder:=[1, 1, 1, 0,
  1979.                  RP_JAM1, 5, [0,0, 31,0, 31,31, 0,31, 0,0]:INT,
  1980.                  shineBorder]:border
  1981.   shineBorderC:=[0, 0, 0, 0,
  1982.                 RP_JAM1, 5, [0,0, 31,0, 31,31, 0,31, 0,0]:INT,
  1983.                 NIL]:border
  1984.   shadowBorderC:=[1, 1, 0, 0,
  1985.                  RP_JAM1, 5, [0,0, 31,0, 31,31, 0,31, 0,0]:INT,
  1986.                  shineBorderC]:border
  1987.  
  1988.   DrawBorder(mywin4.rport, shadowBorder, 12, 15)
  1989.  
  1990. Line(162,77,169,77,1)
  1991. Line(162,94,169,94,1)
  1992. Line(162,109,169,109,1)
  1993.  
  1994.  
  1995. Box(18,21,38,41,1)
  1996. Box(58,21,78,41,1)
  1997. Box(98,21,118,41,1)
  1998. Box(138,21,158,41,1)
  1999. Box(23,26,33,36,4)
  2000. Box(63,26,73,36,5)
  2001. Box(103,26,113,36,6)
  2002. Box(143,26,153,36,7)
  2003. ENDPROC
  2004.  
  2005.  
  2006. PROC killmouse() 
  2007.         mouserequest.command:=IND_SETMPORT
  2008.         mouserequest.data:=[-1]:CHAR       
  2009.         mouserequest.length:=1
  2010.         DoIO(mouserequest)
  2011. restoremouse:=FALSE
  2012. ENDPROC
  2013.  
  2014. PROC instmouse() 
  2015.         mouserequest.command:=IND_SETMPORT
  2016.         mouserequest.data:=[0]:CHAR  
  2017.         mouserequest.length:=1
  2018.         DoIO(mouserequest)
  2019. restoremouse:=TRUE
  2020. ENDPROC
  2021.  
  2022. PROC gameinitial() 
  2023.   DEF joytrigger:gameporttrigger, joytriggerm:gameporttrigger
  2024.  
  2025. killmouse()
  2026.   exec:=execbase
  2027.   game_io_msg.mn.ln.type:=NT_UNKNOWN
  2028.   game_io_msgm.mn.ln.type:=NT_UNKNOWN
  2029.  
  2030.     set_controller_type(GPCT_ABSJOYSTICK, game_io_msg, 1)
  2031.     set_controller_type(GPCT_ABSJOYSTICK, game_io_msgm, 2)
  2032.  
  2033.     set_trigger_conditions(joytrigger, game_io_msg)
  2034.     set_trigger_conditions(joytriggerm, game_io_msgm)
  2035.  
  2036.     flush_buffer(game_io_msg)
  2037.     flush_buffer(game_io_msgm)
  2038.  
  2039.     processEvents(game_io_msg, game_msg_port, game_io_msgm, game_msg_portm)
  2040.     
  2041. free_gp_unit(game_io_msg, 1)
  2042. free_gp_unit(game_io_msgm, 2)
  2043.  
  2044. instmouse()
  2045. ENDPROC
  2046.  
  2047. PROC check_move(game_event:PTR TO inputevent)
  2048.   DEF timeout=FALSE
  2049.  
  2050. IF joy1loop=FALSE
  2051.   movex:=game_event.x
  2052.   movey:=game_event.y
  2053. ELSE
  2054. joy1loop:=FALSE
  2055. ENDIF
  2056. IF play1control=0 THEN hmove(movex, movey, 1)
  2057. IF play1control=1 THEN hmove(movex, movey, 2)
  2058. IF play1control=2 THEN hmove(movex, movey, 3)
  2059. IF play1control=3 THEN hmove(movex, movey, 4)
  2060. ENDPROC timeout
  2061.  
  2062.  
  2063. PROC check_movem(game_event:PTR TO inputevent)
  2064.   DEF timeout=FALSE
  2065.  
  2066. IF joy2loop=FALSE
  2067.   movex2:=game_event.x
  2068.   movey2:=game_event.y
  2069. ELSE 
  2070. joy2loop:=FALSE
  2071. ENDIF
  2072.  
  2073. IF play2control=0 THEN hmove(movex2, movey2, 1)
  2074. IF play2control=1 THEN hmove(movex2, movey2, 2)
  2075. IF play2control=2 THEN hmove(movex2, movey2, 3)
  2076. IF play2control=3 THEN hmove(movex2, movey2, 4)
  2077. ENDPROC timeout
  2078.  
  2079.  
  2080. PROC hmove(xmo, ymo, who)
  2081.  
  2082. IF who=1 
  2083. x:=x1 ; y:=y1 ; joy:=joy1 ; speed:=speed1 ; diel:=die1
  2084. ENDIF
  2085. IF who=2 
  2086. x:=x2 ; y:=y2 ; joy:=joy2 ; speed:=speed2 ; diel:=die2
  2087. ENDIF
  2088. IF who=3 
  2089. x:=x3 ; y:=y3 ; joy:=joy3 ; speed:=speed3 ; diel:=die3
  2090. ENDIF
  2091. IF who=4 
  2092. x:=x4 ; y:=y4 ; joy:=joy4 ; speed:=speed4 ; diel:=die4
  2093. ENDIF
  2094.  
  2095. IF playcount=4 THEN newgame:=FALSE
  2096. playcount:=playcount+1
  2097.  
  2098. IF diel=FALSE
  2099.  
  2100. IF newgame=FALSE
  2101.   IF (xmo=1) AND (ymo=0) AND Not ((joy=3))
  2102.       joy:=4
  2103.   ENDIF
  2104.   IF (xmo=-1) AND (ymo=0) AND Not ((joy=4))
  2105.       joy:=3
  2106.   ENDIF
  2107.   IF (ymo=1) AND (xmo=0) AND Not ((joy=1))
  2108.       joy:=2
  2109.   ENDIF
  2110.   IF (ymo=-1) AND (xmo=0) AND Not ((joy=2))
  2111.       joy:=1
  2112.   ENDIF
  2113. ELSE
  2114. IF (xmo=1) AND (ymo=0) THEN joy:=4
  2115. IF (xmo=-1) AND (ymo=0) THEN joy:=3
  2116. IF (xmo=0) AND (ymo=1) THEN joy:=2
  2117. IF (xmo=0) AND (ymo=-1) THEN joy:=1
  2118. IF who=1 THEN joy1:=joy
  2119. IF who=2 THEN joy2:=joy 
  2120. IF who=3 THEN joy3:=joy 
  2121. IF who=4 THEN joy4:=joy 
  2122. ENDIF
  2123.  
  2124.  
  2125.   IF joy=1 THEN y:=y-1
  2126.   IF joy=2 THEN y:=y+1
  2127.   IF joy=3 THEN x:=x-1
  2128.   IF joy=4 THEN x:=x+1
  2129.  
  2130. IF wrap=TRUE
  2131.   IF x<=4 THEN x:=313
  2132.   IF x>=314 THEN x:=5
  2133.   IF y<=0 THEN y:=243
  2134.   IF y>=244 THEN y:=1
  2135. ELSE
  2136.   IF (x<=4) OR (x>=314) OR (y<=0) OR (y>=244) 
  2137. die(who)
  2138. JUMP loopexit
  2139. ENDIF
  2140. ENDIF
  2141.  
  2142. IF speed=0
  2143. IF (checkcol(ReadPixel(hidden.rport,x,y)))=TRUE
  2144. die(who)
  2145. ELSE
  2146.   Plot(x,y,who+3)
  2147. ENDIF
  2148. ELSE
  2149. IF accelaration<>0 THEN noise(who)
  2150. IF accelaration=1
  2151.      IF joy=1 
  2152.       IF y-5<1
  2153.        tempy1:=y
  2154.    REPEAT
  2155.         IF (checkcol(ReadPixel(hidden.rport,x,tempy1)))=TRUE
  2156.            Line(x,y,x,tempy1+1,who+3)
  2157.            die(who) ; JUMP loopexit
  2158.           ENDIF
  2159.        tempy1:=tempy1-1
  2160.       UNTIL tempy1=0
  2161.          Line(x,y,x,1,who+3)
  2162.         y:=1
  2163.      ELSE
  2164.        tempy1:=y
  2165.       REPEAT
  2166.         IF (checkcol(ReadPixel(hidden.rport,x,tempy1)))=TRUE
  2167.            Line(x,y,x,tempy1+1,who+3)
  2168.            die(who) ; JUMP loopexit
  2169.           ENDIF
  2170.        tempy1:=tempy1-1
  2171.       UNTIL tempy1=(y-6)
  2172.       Line(x,y,x,y-5,who+3)
  2173.       y:=y-5
  2174.       ENDIF
  2175.      ENDIF
  2176.  
  2177.  
  2178.      IF joy=2 
  2179.       IF y+5>243
  2180.        tempy1:=y
  2181.    REPEAT
  2182.         IF (checkcol(ReadPixel(hidden.rport,x,tempy1)))=TRUE
  2183.            Line(x,y,x,tempy1-1,who+3)
  2184.            die(who) ; JUMP loopexit
  2185.           ENDIF
  2186.        tempy1:=tempy1+1
  2187.       UNTIL tempy1=244
  2188.       Line(x,y,x,243,who+3)
  2189.       y:=243
  2190.       ELSE
  2191.        tempy1:=y
  2192.       REPEAT
  2193.         IF (checkcol(ReadPixel(hidden.rport,x,tempy1)))=TRUE
  2194.            Line(x,y,x,tempy1-1,who+3)
  2195.            die(who) ; JUMP loopexit
  2196.           ENDIF
  2197.        tempy1:=tempy1+1
  2198.       UNTIL tempy1=(y+6)
  2199.       Line(x,y,x,y+5,who+3)
  2200.       y:=y+5
  2201.       ENDIF
  2202.      ENDIF
  2203.  
  2204.     IF joy=3
  2205.      IF x-5<5
  2206.        tempx1:=x
  2207.    REPEAT
  2208.         IF (checkcol(ReadPixel(hidden.rport,tempx1,y)))=TRUE
  2209.              Line(x,y,tempx1+1,y,who+3)
  2210.            die(who) ; JUMP loopexit
  2211.           ENDIF
  2212.        tempx1:=tempx1-1
  2213.       UNTIL tempx1=4
  2214.  
  2215.      Line(x,y,5,y,who+3)
  2216.      x:=5
  2217.      ELSE
  2218.        tempx1:=x
  2219.       REPEAT
  2220.         IF (checkcol(ReadPixel(hidden.rport,tempx1,y)))=TRUE
  2221.            Line(x,y,tempx1+1,y,who+3)
  2222.            die(who) ; JUMP loopexit
  2223.           ENDIF
  2224.        tempx1:=tempx1-1
  2225.       UNTIL tempx1=(x-6)
  2226.      Line(x,y,x-5,y,who+3)
  2227.      x:=x-5
  2228.      ENDIF
  2229.     ENDIF
  2230.  
  2231.      IF joy=4
  2232.       IF x+5>313
  2233.        tempx1:=x
  2234.    REPEAT
  2235.         IF (checkcol(ReadPixel(hidden.rport,tempx1,y)))=TRUE
  2236.            Line(x,y,tempx1-1,y,who+3)
  2237.            die(who) ; JUMP loopexit
  2238.           ENDIF
  2239.        tempx1:=tempx1+1
  2240.       UNTIL tempx1=314
  2241.        Line(x,y,313,y,who+3)
  2242.       x:=313
  2243.       ELSE
  2244.        tempx1:=x
  2245.       REPEAT
  2246.         IF (checkcol(ReadPixel(hidden.rport,tempx1,y)))=TRUE
  2247.            Line(x,y,tempx1-1,y,who+3)
  2248.            die(who) ; JUMP loopexit
  2249.           ENDIF
  2250.        tempx1:=tempx1+1
  2251.       UNTIL tempx1=(x+6)
  2252.       Line(x,y,x+5,y,who+3) 
  2253.       x:=x+5
  2254.       ENDIF
  2255.     ENDIF
  2256. ENDIF
  2257.  
  2258. IF accelaration=2
  2259. IF joy=4
  2260. tempy1:=y
  2261. tempy2:=y
  2262. obhity1:=FALSE
  2263. obhity2:=FALSE
  2264.  
  2265. REPEAT
  2266. tempy1:=tempy1+1
  2267. IF (checkcol(ReadPixel(hidden.rport,x-1,tempy1)))=TRUE THEN obhity1:=TRUE
  2268. UNTIL (tempy1=(y+5)) OR (obhity1=TRUE)
  2269. IF obhity1=TRUE THEN tempy1:=tempy1-1
  2270. REPEAT
  2271. tempy2:=tempy2-1
  2272. IF (checkcol(ReadPixel(hidden.rport,x-1,tempy2)))=TRUE THEN obhity2:=TRUE
  2273. UNTIL (tempy2=(y-5)) OR (obhity2=TRUE)
  2274. IF obhity2=TRUE THEN tempy2:=tempy2+1
  2275.  
  2276. Line(x-1,tempy1,x-1,tempy2, who+3)
  2277. speed:=1
  2278. ENDIF
  2279.  
  2280. IF joy=3
  2281. tempy1:=y
  2282. tempy2:=y
  2283. obhity1:=FALSE
  2284. obhity2:=FALSE
  2285.  
  2286. REPEAT
  2287. tempy1:=tempy1+1
  2288. IF (checkcol(ReadPixel(hidden.rport,x+1,tempy1)))=TRUE THEN obhity1:=TRUE
  2289. UNTIL (tempy1=(y+5)) OR (obhity1=TRUE)
  2290. IF obhity1=TRUE THEN tempy1:=tempy1-1
  2291. REPEAT
  2292. tempy2:=tempy2-1
  2293. IF (checkcol(ReadPixel(hidden.rport,x+1,tempy2)))=TRUE THEN obhity2:=TRUE
  2294. UNTIL (tempy2=(y-5)) OR (obhity2=TRUE)
  2295. IF obhity2=TRUE THEN tempy2:=tempy2+1
  2296.  
  2297. Line(x+1,tempy1,x+1,tempy2, who+3)
  2298. speed:=1
  2299.  
  2300.  
  2301. ENDIF
  2302.  
  2303. IF joy=1
  2304.  
  2305. tempy1:=x
  2306. tempy2:=x
  2307. obhity1:=FALSE
  2308. obhity2:=FALSE
  2309.  
  2310. REPEAT
  2311. tempy1:=tempy1+1
  2312. IF (checkcol(ReadPixel(hidden.rport,tempy1,y+1)))=TRUE THEN obhity1:=TRUE
  2313. UNTIL (tempy1=(x+5)) OR (obhity1=TRUE)
  2314. IF obhity1=TRUE THEN tempy1:=tempy1-1
  2315. REPEAT
  2316. tempy2:=tempy2-1
  2317. IF (checkcol(ReadPixel(hidden.rport,tempy2,y+1)))=TRUE THEN obhity2:=TRUE
  2318. UNTIL (tempy2=(x-5)) OR (obhity2=TRUE)
  2319. IF obhity2=TRUE THEN tempy2:=tempy2+1
  2320.  
  2321. Line(tempy1,y+1,tempy2,y+1, who+3)
  2322. speed:=1
  2323. ENDIF
  2324.  
  2325. IF joy=2
  2326.  
  2327. tempy1:=x
  2328. tempy2:=x
  2329. obhity1:=FALSE
  2330. obhity2:=FALSE
  2331.  
  2332. REPEAT
  2333. tempy1:=tempy1+1
  2334. IF (checkcol(ReadPixel(hidden.rport,tempy1,y-1)))=TRUE THEN obhity1:=TRUE
  2335. UNTIL (tempy1=(x+5)) OR (obhity1=TRUE)
  2336. IF obhity1=TRUE THEN tempy1:=tempy1-1
  2337. REPEAT
  2338. tempy2:=tempy2-1
  2339. IF (checkcol(ReadPixel(hidden.rport,tempy2,y-1)))=TRUE THEN obhity2:=TRUE
  2340. UNTIL (tempy2=(x-5)) OR (obhity2=TRUE)
  2341. IF obhity2=TRUE THEN tempy2:=tempy2+1
  2342.  
  2343. Line(tempy1,y-1,tempy2,y-1, who+3)
  2344. speed:=1
  2345. ENDIF
  2346.  
  2347.   Plot(x,y,who+3)
  2348. ENDIF
  2349.  
  2350. speed:=speed-1
  2351. ENDIF
  2352. ENDIF
  2353. loopexit:
  2354.  
  2355. IF swooshy=TRUE
  2356. IF (who=1) AND (joy1<>joy)
  2357.   playData(sampled,samplend,1500000,CHAN_LEFT1,20)
  2358. WaitTOF()
  2359. exitLoop(CHAN_LEFT1)
  2360. ENDIF
  2361. IF (who=2) AND (joy2<>joy)
  2362.   playData(sampled,samplend,1600000,CHAN_LEFT2,20)
  2363. WaitTOF()
  2364. exitLoop(CHAN_LEFT2)
  2365. ENDIF
  2366. IF (who=3) AND (joy3<>joy)
  2367.   playData(sampled,samplend,1700000,CHAN_RIGHT1,20)
  2368. WaitTOF()
  2369. exitLoop(CHAN_RIGHT1)
  2370. ENDIF
  2371. IF (who=4) AND (joy4<>joy)
  2372.   playData(sampled,samplend,1800000,CHAN_RIGHT2,20)
  2373. WaitTOF()
  2374. exitLoop(CHAN_RIGHT2)
  2375. ENDIF
  2376. ENDIF
  2377.  
  2378. IF who=1 
  2379. x1:=x ; y1:=y ; joy1:=joy ; speed1:=speed 
  2380. ENDIF
  2381. IF who=2 
  2382. x2:=x ; y2:=y ; joy2:=joy ; speed2:=speed 
  2383. ENDIF
  2384. IF who=3 
  2385. x3:=x ; y3:=y ; joy3:=joy ; speed3:=speed 
  2386. ENDIF
  2387. IF who=4 
  2388. x4:=x ; y4:=y ; joy4:=joy ; speed4:=speed 
  2389. ENDIF
  2390.  
  2391. ENDPROC
  2392.  
  2393. PROC calccomp()
  2394. DEF spec1y, spec1x, spec1rnd=0
  2395.  
  2396.  
  2397. IF cdie1=FALSE
  2398. options(1)
  2399.  
  2400. IF (accelaration=2) AND (limspeedc1<1)
  2401. spec1rnd:=Rnd(300)
  2402.  
  2403. IF spec1rnd=25
  2404. limspeedc1:=100
  2405.  
  2406. IF samplei
  2407.   playData(samplei,sampleni,150000,CHAN_LEFT1,40)
  2408. WaitTOF()
  2409. exitLoop(CHAN_LEFT1)
  2410. ENDIF
  2411. IF cway1=1
  2412. tempy1:=cx1
  2413. tempy2:=cx1
  2414. obhity1:=FALSE
  2415. obhity2:=FALSE
  2416. REPEAT
  2417. tempy1:=tempy1+1
  2418. IF (checkcol(ReadPixel(hidden.rport,tempy1,cy1+2)))=TRUE THEN obhity1:=TRUE
  2419. UNTIL (tempy1=(cx1+5)) OR (obhity1=TRUE)
  2420. IF obhity1=TRUE THEN tempy1:=tempy1-1
  2421. REPEAT
  2422. tempy2:=tempy2-1
  2423. IF (checkcol(ReadPixel(hidden.rport,tempy2,cy1+2)))=TRUE THEN obhity2:=TRUE
  2424. UNTIL (tempy2=(cx1-5)) OR (obhity2=TRUE)
  2425. IF obhity2=TRUE THEN tempy2:=tempy2+1
  2426. Line(tempy1,cy1+2,tempy2,cy1+2, 4)
  2427. ENDIF
  2428.  
  2429. IF cway1=3
  2430. tempy1:=cx1
  2431. tempy2:=cx1
  2432. obhity1:=FALSE
  2433. obhity2:=FALSE
  2434. REPEAT
  2435. tempy1:=tempy1+1
  2436. IF (checkcol(ReadPixel(hidden.rport,tempy1,cy1-2)))=TRUE THEN obhity1:=TRUE
  2437. UNTIL (tempy1=(cx1+5)) OR (obhity1=TRUE)
  2438. IF obhity1=TRUE THEN tempy1:=tempy1-1
  2439. REPEAT
  2440. tempy2:=tempy2-1
  2441. IF (checkcol(ReadPixel(hidden.rport,tempy2,cy1-2)))=TRUE THEN obhity2:=TRUE
  2442. UNTIL (tempy2=(cx1-5)) OR (obhity2=TRUE)
  2443. IF obhity2=TRUE THEN tempy2:=tempy2+1
  2444. Line(tempy1,cy1-2,tempy2,cy1-2, 4)
  2445. ENDIF
  2446.  
  2447. IF cway1=2
  2448. tempy1:=cy1
  2449. tempy2:=cy1
  2450. obhity1:=FALSE
  2451. obhity2:=FALSE
  2452. REPEAT
  2453. tempy1:=tempy1+1
  2454. IF (checkcol(ReadPixel(hidden.rport,cx1-2,tempy1)))=TRUE THEN obhity1:=TRUE
  2455. UNTIL (tempy1=(cy1+5)) OR (obhity1=TRUE)
  2456. IF obhity1=TRUE THEN tempy1:=tempy1-1
  2457. REPEAT
  2458. tempy2:=tempy2-1
  2459. IF (checkcol(ReadPixel(hidden.rport,cx1-2,tempy2)))=TRUE THEN obhity2:=TRUE
  2460. UNTIL (tempy2=(cy1-5)) OR (obhity2=TRUE)
  2461. IF obhity2=TRUE THEN tempy2:=tempy2+1
  2462. Line(cx1-2,tempy1,cx1-2,tempy2, 4)
  2463. ENDIF
  2464.  
  2465. IF cway1=4
  2466. tempy1:=cy1
  2467. tempy2:=cy1
  2468. obhity1:=FALSE
  2469. obhity2:=FALSE
  2470. REPEAT
  2471. tempy1:=tempy1+1
  2472. IF (checkcol(ReadPixel(hidden.rport,cx1+2,tempy1)))=TRUE THEN obhity1:=TRUE
  2473. UNTIL (tempy1=(cy1+5)) OR (obhity1=TRUE)
  2474. IF obhity1=TRUE THEN tempy1:=tempy1-1
  2475. REPEAT
  2476. tempy2:=tempy2-1
  2477. IF (checkcol(ReadPixel(hidden.rport,cx1+2,tempy2)))=TRUE THEN obhity2:=TRUE
  2478. UNTIL (tempy2=(cy1-5)) OR (obhity2=TRUE)
  2479. IF obhity2=TRUE THEN tempy2:=tempy2+1
  2480. Line(cx1+2,tempy1,cx1+2,tempy2, 4)
  2481. ENDIF
  2482. ENDIF
  2483. ELSE
  2484. limspeedc1:=limspeedc1-1
  2485. ENDIF
  2486.  
  2487. spec1rnd:=0
  2488. IF (limspeedc1<1) AND (accelaration=1)
  2489. spec1rnd:=Rnd(300) 
  2490. ELSE
  2491. limspeedc1:=limspeedc1-1
  2492. ENDIF
  2493.  
  2494. IF spec1rnd<>25 
  2495.         IF (checkcol(ReadPixel(hidden.rport,cx1,cy1)))=TRUE
  2496.             die(1)
  2497.            JUMP loopexitc1
  2498.           ENDIF
  2499.  Plot(cx1,cy1,4)
  2500. ELSE
  2501. limspeedc1:=100
  2502.  
  2503.      IF cway1=1 
  2504.       IF cy1-20<1
  2505.        spec1y:=cy1
  2506.    REPEAT
  2507.         IF (checkcol(ReadPixel(hidden.rport,cx1,spec1y)))=TRUE
  2508.            Line(cx1,cy1,cx1,spec1y+2,4)
  2509.            cy1:=spec1y+1
  2510.            JUMP loopexitc1
  2511.           ENDIF
  2512.        spec1y:=spec1y-1
  2513.       UNTIL spec1y=0
  2514.          Line(cx1,cy1,cx1,1,4)
  2515.         cy1:=1
  2516.      ELSE
  2517.        spec1y:=cy1
  2518. IF samplei
  2519.   playData(samplei,sampleni,150000,CHAN_LEFT1,40)
  2520. WaitTOF()
  2521. exitLoop(CHAN_LEFT1)
  2522. ENDIF
  2523.       REPEAT
  2524.         IF (checkcol(ReadPixel(hidden.rport,cx1,spec1y)))=TRUE
  2525.            Line(cx1,cy1,cx1,spec1y+1,4)
  2526.            cy1:=spec1y+1
  2527.            JUMP loopexitc1
  2528.           ENDIF
  2529.        spec1y:=spec1y-1
  2530.       UNTIL spec1y=(cy1-21)
  2531.       Line(cx1,cy1,cx1,cy1-20,4)
  2532.       cy1:=cy1-20
  2533.       ENDIF
  2534.      ENDIF
  2535.  
  2536.      IF cway1=2 
  2537.       IF cy1+20>243
  2538.        spec1y:=cy1
  2539.    REPEAT
  2540.         IF (checkcol(ReadPixel(hidden.rport,cx1,spec1y)))=TRUE
  2541.            Line(cx1,cy1,cx1,spec1y-1,4)
  2542.            cy1:=spec1y-1
  2543.            JUMP loopexitc1
  2544.           ENDIF
  2545.        spec1y:=spec1y+1
  2546.       UNTIL spec1y=244
  2547.       Line(cx1,cy1,cx1,243,4)
  2548.       cy1:=243
  2549.       ELSE
  2550.        spec1y:=cy1
  2551. IF samplei
  2552.   playData(samplei,sampleni,150000,CHAN_LEFT1,40)
  2553. WaitTOF()
  2554. exitLoop(CHAN_LEFT1)
  2555. ENDIF
  2556.       REPEAT
  2557.         IF (checkcol(ReadPixel(hidden.rport,cx1,spec1y)))=TRUE
  2558.            Line(cx1,cy1,cx1,spec1y-1,4)
  2559.                      cy1:=spec1y-1
  2560.            JUMP loopexitc1
  2561.           ENDIF
  2562.        spec1y:=spec1y+1
  2563.       UNTIL spec1y=(cy1+21)
  2564.       Line(cx1,cy1,cx1,cy1+20,4)
  2565.       cy1:=cy1+20
  2566.       ENDIF
  2567.      ENDIF
  2568.  
  2569.     IF cway1=3
  2570.      IF cx1-20<5
  2571.        spec1x:=cx1
  2572.    REPEAT
  2573.         IF (checkcol(ReadPixel(hidden.rport,spec1x,cy1)))=TRUE
  2574.            Line(cx1,cy1,spec1x+1,cy1,4)
  2575.              cx1:=spec1x+1
  2576.            JUMP loopexitc1
  2577.           ENDIF
  2578.        spec1x:=spec1x-1
  2579.       UNTIL spec1x=4
  2580.  
  2581.      Line(cx1,cy1,5,cy1,4)
  2582.      cx1:=5
  2583.      ELSE
  2584. IF samplei
  2585.   playData(samplei,sampleni,150000,CHAN_LEFT1,40)
  2586. WaitTOF()
  2587. exitLoop(CHAN_LEFT1)
  2588. ENDIF
  2589.        spec1x:=cx1
  2590.       REPEAT
  2591.         IF (checkcol(ReadPixel(hidden.rport,spec1x,cy1)))=TRUE
  2592.            Line(cx1,cy1,spec1x+1,cy1,4)
  2593.            cx1:=spec1x+1
  2594.            JUMP loopexitc1
  2595.           ENDIF
  2596.        spec1x:=spec1x-1
  2597.       UNTIL spec1x=(cx1-21)
  2598.      Line(cx1,cy1,cx1-20,cy1,4)
  2599.      cx1:=cx1-20
  2600.      ENDIF
  2601.     ENDIF
  2602.  
  2603.      IF cway1=4
  2604.       IF cx1+20>313
  2605.        spec1x:=cx1
  2606.    REPEAT
  2607.         IF (checkcol(ReadPixel(hidden.rport,spec1x,cy1)))=TRUE
  2608.            Line(cx1,cy1,spec1x-1,cy1,4)
  2609.            cx1:=spec1x-1
  2610.            JUMP loopexitc1
  2611.           ENDIF
  2612.        spec1x:=spec1x+1
  2613.       UNTIL spec1x=314
  2614.        Line(cx1,cy1,313,cy1,4)
  2615.       cx1:=313
  2616.       ELSE
  2617.        spec1x:=cx1
  2618. IF samplei
  2619.   playData(samplei,sampleni,150000,CHAN_LEFT1,40)
  2620. WaitTOF()
  2621. exitLoop(CHAN_LEFT1)
  2622. ENDIF
  2623.       REPEAT
  2624.         IF (checkcol(ReadPixel(hidden.rport,spec1x,cy1)))=TRUE
  2625.           Line(cx1,cy1,spec1x-1,cy1,4)
  2626.            cx1:=spec1x-1
  2627.            JUMP loopexitc1
  2628.           ENDIF
  2629.        spec1x:=spec1x+1
  2630.       UNTIL spec1x=(cx1+21)
  2631.       Line(cx1,cy1,cx1+20,cy1,4) 
  2632.       cx1:=cx1+20
  2633.       ENDIF
  2634.     ENDIF
  2635.  
  2636. ENDIF
  2637. ENDIF
  2638.  
  2639. loopexitc1:
  2640.  
  2641.  
  2642. IF cdie2=FALSE
  2643. options(2)
  2644.  
  2645. IF (accelaration=2) AND (limspeedc2<1)
  2646. spec1rnd:=Rnd(300)
  2647.  
  2648. IF spec1rnd=25
  2649. limspeedc2:=100
  2650.  
  2651. IF samplei
  2652.   
  2653. playData(samplei,sampleni,150000,CHAN_LEFT2,40)
  2654. WaitTOF()
  2655. exitLoop(CHAN_LEFT2)
  2656. ENDIF
  2657. IF cway2=1
  2658. tempy1:=cx2
  2659. tempy2:=cx2
  2660. obhity1:=FALSE
  2661. obhity2:=FALSE
  2662. REPEAT
  2663. tempy1:=tempy1+1
  2664. IF (checkcol(ReadPixel(hidden.rport,tempy1,cy2+2)))=TRUE THEN obhity1:=TRUE
  2665. UNTIL (tempy1=(cx2+5)) OR (obhity1=TRUE)
  2666. IF obhity1=TRUE THEN tempy1:=tempy1-1
  2667. REPEAT
  2668. tempy2:=tempy2-1
  2669. IF (checkcol(ReadPixel(hidden.rport,tempy2,cy2+2)))=TRUE THEN obhity2:=TRUE
  2670. UNTIL (tempy2=(cx2-5)) OR (obhity2=TRUE)
  2671. IF obhity2=TRUE THEN tempy2:=tempy2+1
  2672. Line(tempy1,cy2+2,tempy2,cy2+2, 5)
  2673. ENDIF
  2674.  
  2675. IF cway2=3
  2676. tempy1:=cx2
  2677. tempy2:=cx2
  2678. obhity1:=FALSE
  2679. obhity2:=FALSE
  2680. REPEAT
  2681. tempy1:=tempy1+1
  2682. IF (checkcol(ReadPixel(hidden.rport,tempy1,cy2-2)))=TRUE THEN obhity1:=TRUE
  2683. UNTIL (tempy1=(cx2+5)) OR (obhity1=TRUE)
  2684. IF obhity1=TRUE THEN tempy1:=tempy1-1
  2685. REPEAT
  2686. tempy2:=tempy2-1
  2687. IF (checkcol(ReadPixel(hidden.rport,tempy2,cy2-2)))=TRUE THEN obhity2:=TRUE
  2688. UNTIL (tempy2=(cx2-5)) OR (obhity2=TRUE)
  2689. IF obhity2=TRUE THEN tempy2:=tempy2+1
  2690. Line(tempy1,cy2-2,tempy2,cy2-2, 5)
  2691. ENDIF
  2692.  
  2693. IF cway2=2
  2694. tempy1:=cy2
  2695. tempy2:=cy2
  2696. obhity1:=FALSE
  2697. obhity2:=FALSE
  2698. REPEAT
  2699. tempy1:=tempy1+1
  2700. IF (checkcol(ReadPixel(hidden.rport,cx2-2,tempy1)))=TRUE THEN obhity1:=TRUE
  2701. UNTIL (tempy1=(cy2+5)) OR (obhity1=TRUE)
  2702. IF obhity1=TRUE THEN tempy1:=tempy1-1
  2703. REPEAT
  2704. tempy2:=tempy2-1
  2705. IF (checkcol(ReadPixel(hidden.rport,cx2-2,tempy2)))=TRUE THEN obhity2:=TRUE
  2706. UNTIL (tempy2=(cy2-5)) OR (obhity2=TRUE)
  2707. IF obhity2=TRUE THEN tempy2:=tempy2+1
  2708. Line(cx2-2,tempy1,cx2-2,tempy2, 5)
  2709. ENDIF
  2710.  
  2711. IF cway2=4
  2712. tempy1:=cy2
  2713. tempy2:=cy2
  2714. obhity1:=FALSE
  2715. obhity2:=FALSE
  2716. REPEAT
  2717. tempy1:=tempy1+1
  2718. IF (checkcol(ReadPixel(hidden.rport,cx2+2,tempy1)))=TRUE THEN obhity1:=TRUE
  2719. UNTIL (tempy1=(cy2+5)) OR (obhity1=TRUE)
  2720. IF obhity1=TRUE THEN tempy1:=tempy1-1
  2721. REPEAT
  2722. tempy2:=tempy2-1
  2723. IF (checkcol(ReadPixel(hidden.rport,cx2+2,tempy2)))=TRUE THEN obhity2:=TRUE
  2724. UNTIL (tempy2=(cy2-5)) OR (obhity2=TRUE)
  2725. IF obhity2=TRUE THEN tempy2:=tempy2+1
  2726. Line(cx2+2,tempy1,cx2+2,tempy2, 5)
  2727. ENDIF
  2728. ENDIF
  2729. ELSE
  2730. limspeedc2:=limspeedc2-1
  2731. ENDIF
  2732.  
  2733. spec1rnd:=0
  2734.  
  2735. IF (limspeedc2<1) AND (accelaration=1)
  2736. spec1rnd:=Rnd(300) 
  2737. ELSE
  2738. limspeedc2:=limspeedc2-1
  2739. ENDIF
  2740.  
  2741. IF spec1rnd<>25 
  2742.         IF (checkcol(ReadPixel(hidden.rport,cx2,cy2)))=TRUE
  2743.             die(2)
  2744.            JUMP loopexitc2
  2745.           ENDIF
  2746.  Plot(cx2,cy2,5)
  2747. ELSE
  2748. limspeedc2:=100
  2749.  
  2750.      IF cway2=1 
  2751.       IF cy2-20<1
  2752.        spec1y:=cy2
  2753.    REPEAT
  2754.         IF (checkcol(ReadPixel(hidden.rport,cx2,spec1y)))=TRUE
  2755.            Line(cx2,cy2,cx2,spec1y+1,5)
  2756.            cy2:=spec1y+1            
  2757.            JUMP loopexitc2
  2758.           ENDIF
  2759.        spec1y:=spec1y-1
  2760.       UNTIL spec1y=0
  2761.          Line(cx2,cy2,cx2,1,5)
  2762.         cy2:=1
  2763.      ELSE
  2764.        spec1y:=cy2
  2765. IF samplei
  2766.  
  2767.   playData(samplei,sampleni,150000,CHAN_LEFT2,40)
  2768. WaitTOF()
  2769. exitLoop(CHAN_LEFT2)
  2770. ENDIF
  2771.       REPEAT
  2772.         IF (checkcol(ReadPixel(hidden.rport,cx2,spec1y)))=TRUE
  2773.            Line(cx2,cy2,cx2,spec1y+1,5)
  2774.            cy2:=spec1y+1
  2775.            JUMP loopexitc2
  2776.           ENDIF
  2777.        spec1y:=spec1y-1
  2778.       UNTIL spec1y=(cy2-21)
  2779.       Line(cx2,cy2,cx2,cy2-20,5)
  2780.       cy2:=cy2-20
  2781.       ENDIF
  2782.      ENDIF
  2783.  
  2784.      IF cway2=2 
  2785.       IF cy2+20>243
  2786.        spec1y:=cy2
  2787.    REPEAT
  2788.         IF (checkcol(ReadPixel(hidden.rport,cx2,spec1y)))=TRUE
  2789.            Line(cx2,cy2,cx2,spec1y-1,5)
  2790.            cy2:=spec1y-1
  2791.            JUMP loopexitc1
  2792.           ENDIF
  2793.        spec1y:=spec1y+1
  2794.       UNTIL spec1y=244
  2795.       Line(cx2,cy2,cx2,243,5)
  2796.       cy2:=243
  2797.       ELSE
  2798.        spec1y:=cy2
  2799. IF samplei
  2800.  
  2801.   playData(samplei,sampleni,150000,CHAN_LEFT2,40)
  2802. WaitTOF()
  2803. exitLoop(CHAN_LEFT2)
  2804. ENDIF
  2805.       REPEAT
  2806.         IF (checkcol(ReadPixel(hidden.rport,cx2,spec1y)))=TRUE
  2807.            Line(cx2,cy2,cx2,spec1y-1,5)
  2808.            cy2:=spec1y-1
  2809.            JUMP loopexitc2
  2810.           ENDIF
  2811.        spec1y:=spec1y+1
  2812.       UNTIL spec1y=(cy2+21)
  2813.       Line(cx2,cy2,cx2,cy2+20,5)
  2814.       cy2:=cy2+20
  2815.       ENDIF
  2816.      ENDIF
  2817.  
  2818.     IF cway2=3
  2819.      IF cx2-20<5
  2820.        spec1x:=cx2
  2821.    REPEAT
  2822.         IF (checkcol(ReadPixel(hidden.rport,spec1x,cy2)))=TRUE
  2823.            Line(cx2,cy2,spec1x+1,cy2,5)
  2824.            cx2:=spec1x+1
  2825.            JUMP loopexitc2
  2826.           ENDIF
  2827.        spec1x:=spec1x-1
  2828.       UNTIL spec1x=4
  2829.  
  2830.      Line(cx2,cy2,5,cy2,5)
  2831.      cx2:=5
  2832.      ELSE
  2833.        spec1x:=cx2
  2834. IF samplei
  2835.  
  2836.   playData(samplei,sampleni,150000,CHAN_LEFT2,40)
  2837. WaitTOF()
  2838. exitLoop(CHAN_LEFT2)
  2839. ENDIF
  2840.       REPEAT
  2841.         IF (checkcol(ReadPixel(hidden.rport,spec1x,cy2)))=TRUE
  2842.            Line(cx2,cy2,spec1x+1,cy2,5)
  2843.            cx2:=spec1x+1
  2844.            JUMP loopexitc2
  2845.           ENDIF
  2846.        spec1x:=spec1x-1
  2847.       UNTIL spec1x=(cx2-21)
  2848.      Line(cx2,cy2,cx2-20,cy2,5)
  2849.      cx2:=cx2-20
  2850.      ENDIF
  2851.     ENDIF
  2852.  
  2853.      IF cway2=4
  2854.       IF cx2+20>313
  2855.        spec1x:=cx2
  2856.    REPEAT
  2857.         IF (checkcol(ReadPixel(hidden.rport,spec1x,cy2)))=TRUE
  2858.            Line(cx2,cy2,spec1x-1,cy2,5)
  2859.            cx2:=spec1x-1
  2860.            JUMP loopexitc2
  2861.           ENDIF
  2862.        spec1x:=spec1x+1
  2863.       UNTIL spec1x=314
  2864.        Line(cx2,cy2,313,cy2,5)
  2865.       cx2:=313
  2866.       ELSE
  2867.        spec1x:=cx2
  2868. IF samplei
  2869.  
  2870.   playData(samplei,sampleni,150000,CHAN_LEFT2,40)
  2871. WaitTOF()
  2872. exitLoop(CHAN_LEFT2)
  2873. ENDIF
  2874.       REPEAT
  2875.         IF (checkcol(ReadPixel(hidden.rport,spec1x,cy2)))=TRUE
  2876.            Line(cx2,cy2,spec1x-1,cy2,5)
  2877.            cx2:=spec1x-1
  2878.            JUMP loopexitc2
  2879.           ENDIF
  2880.        spec1x:=spec1x+1
  2881.       UNTIL spec1x=(cx2+21)
  2882.       Line(cx2,cy2,cx2+20,cy2,5) 
  2883.       cx2:=cx2+20
  2884.       ENDIF
  2885.     ENDIF
  2886.  
  2887. ENDIF
  2888. ENDIF
  2889.  
  2890. loopexitc2:
  2891.  
  2892. IF cdie3=FALSE
  2893. options(3)
  2894.  
  2895. IF (accelaration=2) AND (limspeedc3<1)
  2896. spec1rnd:=Rnd(300)
  2897.  
  2898. IF spec1rnd=25
  2899. limspeedc3:=100
  2900.  
  2901. IF samplei
  2902.  
  2903.   playData(samplei,sampleni,150000,CHAN_RIGHT1,40)
  2904. WaitTOF()
  2905. exitLoop(CHAN_RIGHT1)
  2906. ENDIF
  2907. IF cway3=1
  2908. tempy1:=cx3
  2909. tempy2:=cx3
  2910. obhity1:=FALSE
  2911. obhity2:=FALSE
  2912. REPEAT
  2913. tempy1:=tempy1+1
  2914. IF (checkcol(ReadPixel(hidden.rport,tempy1,cy3+2)))=TRUE THEN obhity1:=TRUE
  2915. UNTIL (tempy1=(cx3+5)) OR (obhity1=TRUE)
  2916. IF obhity1=TRUE THEN tempy1:=tempy1-1
  2917. REPEAT
  2918. tempy2:=tempy2-1
  2919. IF (checkcol(ReadPixel(hidden.rport,tempy2,cy3+2)))=TRUE THEN obhity2:=TRUE
  2920. UNTIL (tempy2=(cx3-5)) OR (obhity2=TRUE)
  2921. IF obhity2=TRUE THEN tempy2:=tempy2+1
  2922. Line(tempy1,cy3+2,tempy2,cy3+2, 6)
  2923. ENDIF
  2924.  
  2925. IF cway3=3
  2926. tempy1:=cx3
  2927. tempy2:=cx3
  2928. obhity1:=FALSE
  2929. obhity2:=FALSE
  2930. REPEAT
  2931. tempy1:=tempy1+1
  2932. IF (checkcol(ReadPixel(hidden.rport,tempy1,cy3-2)))=TRUE THEN obhity1:=TRUE
  2933. UNTIL (tempy1=(cx3+5)) OR (obhity1=TRUE)
  2934. IF obhity1=TRUE THEN tempy1:=tempy1-1
  2935. REPEAT
  2936. tempy2:=tempy2-1
  2937. IF (checkcol(ReadPixel(hidden.rport,tempy2,cy3-2)))=TRUE THEN obhity2:=TRUE
  2938. UNTIL (tempy2=(cx3-5)) OR (obhity2=TRUE)
  2939. IF obhity2=TRUE THEN tempy2:=tempy2+1
  2940. Line(tempy1,cy3-2,tempy2,cy3-2, 6)
  2941. ENDIF
  2942.  
  2943. IF cway3=2
  2944. tempy1:=cy3
  2945. tempy2:=cy3
  2946. obhity1:=FALSE
  2947. obhity2:=FALSE
  2948. REPEAT
  2949. tempy1:=tempy1+1
  2950. IF (checkcol(ReadPixel(hidden.rport,cx3-2,tempy1)))=TRUE THEN obhity1:=TRUE
  2951. UNTIL (tempy1=(cy3+5)) OR (obhity1=TRUE)
  2952. IF obhity1=TRUE THEN tempy1:=tempy1-1
  2953. REPEAT
  2954. tempy2:=tempy2-1
  2955. IF (checkcol(ReadPixel(hidden.rport,cx3-2,tempy2)))=TRUE THEN obhity2:=TRUE
  2956. UNTIL (tempy2=(cy3-5)) OR (obhity2=TRUE)
  2957. IF obhity2=TRUE THEN tempy2:=tempy2+1
  2958. Line(cx3-2,tempy1,cx3-2,tempy2, 6)
  2959. ENDIF
  2960.  
  2961. IF cway3=4
  2962. tempy1:=cy3
  2963. tempy2:=cy3
  2964. obhity1:=FALSE
  2965. obhity2:=FALSE
  2966. REPEAT
  2967. tempy1:=tempy1+1
  2968. IF (checkcol(ReadPixel(hidden.rport,cx3+2,tempy1)))=TRUE THEN obhity1:=TRUE
  2969. UNTIL (tempy1=(cy3+5)) OR (obhity1=TRUE)
  2970. IF obhity1=TRUE THEN tempy1:=tempy1-1
  2971. REPEAT
  2972. tempy2:=tempy2-1
  2973. IF (checkcol(ReadPixel(hidden.rport,cx3+2,tempy2)))=TRUE THEN obhity2:=TRUE
  2974. UNTIL (tempy2=(cy3-5)) OR (obhity2=TRUE)
  2975. IF obhity2=TRUE THEN tempy2:=tempy2+1
  2976. Line(cx3+2,tempy1,cx3+2,tempy2, 6)
  2977. ENDIF
  2978. ENDIF
  2979. ELSE
  2980. limspeedc3:=limspeedc3-1
  2981. ENDIF
  2982. spec1rnd:=0
  2983.  
  2984. IF (limspeedc3<1) AND (accelaration=1)
  2985. spec1rnd:=Rnd(300) 
  2986. ELSE
  2987. limspeedc3:=limspeedc3-1
  2988. ENDIF
  2989.  
  2990. IF spec1rnd<>25 
  2991.         IF (checkcol(ReadPixel(hidden.rport,cx3,cy3)))=TRUE
  2992.             die(3)
  2993.            JUMP loopexitc3
  2994.           ENDIF
  2995.  Plot(cx3,cy3,6)
  2996. ELSE
  2997. limspeedc3:=100
  2998.  
  2999.      IF cway3=1 
  3000.       IF cy3-20<1
  3001.        spec1y:=cy3
  3002.    REPEAT
  3003.         IF (checkcol(ReadPixel(hidden.rport,cx3,spec1y)))=TRUE
  3004.            Line(cx3,cy3,cx3,spec1y+1,6)
  3005.            cy3:=spec1y+1
  3006.            JUMP loopexitc3
  3007.           ENDIF
  3008.        spec1y:=spec1y-1
  3009.       UNTIL spec1y=0
  3010.          Line(cx3,cy3,cx3,1,6)
  3011.         cy3:=1
  3012.      ELSE
  3013.        spec1y:=cy3
  3014. IF samplei
  3015.  
  3016.   playData(samplei,sampleni,150000,CHAN_RIGHT1,40)
  3017. WaitTOF()
  3018. exitLoop(CHAN_RIGHT1)
  3019. ENDIF
  3020.       REPEAT
  3021.         IF (checkcol(ReadPixel(hidden.rport,cx3,spec1y)))=TRUE
  3022.            Line(cx3,cy3,cx3,spec1y+1,6)
  3023.            cy3:=spec1y+1
  3024.            JUMP loopexitc3
  3025.           ENDIF
  3026.        spec1y:=spec1y-1
  3027.       UNTIL spec1y=(cy3-21)
  3028.       Line(cx3,cy3,cx3,cy3-20,6)
  3029.       cy3:=cy3-20
  3030.       ENDIF
  3031.      ENDIF
  3032.  
  3033.      IF cway3=2 
  3034.       IF cy3+20>243
  3035.        spec1y:=cy3
  3036.    REPEAT
  3037.         IF (checkcol(ReadPixel(hidden.rport,cx3,spec1y)))=TRUE
  3038.            Line(cx3,cy3,cx3,spec1y-1,6)
  3039.            cy3:=spec1y-1
  3040.            JUMP loopexitc3
  3041.           ENDIF
  3042.        spec1y:=spec1y+1
  3043.       UNTIL spec1y=244
  3044.       Line(cx3,cy3,cx3,243,6)
  3045.       cy3:=243
  3046.       ELSE
  3047.        spec1y:=cy3
  3048. IF samplei
  3049.  
  3050.   playData(samplei,sampleni,150000,CHAN_RIGHT1,40)
  3051. WaitTOF()
  3052. exitLoop(CHAN_RIGHT1)
  3053. ENDIF
  3054.       REPEAT
  3055.         IF (checkcol(ReadPixel(hidden.rport,cx3,spec1y)))=TRUE
  3056.            Line(cx3,cy3,cx3,spec1y-1,6)
  3057.            cy3:=spec1y-1
  3058.            JUMP loopexitc3
  3059.           ENDIF
  3060.        spec1y:=spec1y+1
  3061.       UNTIL spec1y=(cy3+21)
  3062.       Line(cx3,cy3,cx3,cy3+20,6)
  3063.       cy3:=cy3+20
  3064.       ENDIF
  3065.      ENDIF
  3066.  
  3067.     IF cway3=3
  3068.      IF cx3-20<5
  3069.        spec1x:=cx3
  3070.    REPEAT
  3071.         IF (checkcol(ReadPixel(hidden.rport,spec1x,cy3)))=TRUE
  3072.            Line(cx3,cy3,spec1x+1,cy3,6)
  3073.            cx3:=spec1x+1
  3074.            JUMP loopexitc3
  3075.           ENDIF
  3076.        spec1x:=spec1x-1
  3077.       UNTIL spec1x=4
  3078.  
  3079.      Line(cx3,cy3,5,cy3,6)
  3080.      cx3:=5
  3081.      ELSE
  3082.        spec1x:=cx3
  3083. IF samplei
  3084.  
  3085.   playData(samplei,sampleni,150000,CHAN_RIGHT1,40)
  3086. WaitTOF()
  3087. exitLoop(CHAN_RIGHT1)
  3088. ENDIF
  3089.       REPEAT
  3090.         IF (checkcol(ReadPixel(hidden.rport,spec1x,cy3)))=TRUE
  3091.            Line(cx3,cy3,spec1x+1,cy3,6)
  3092.            cx3:=spec1x+1
  3093.            JUMP loopexitc3
  3094.           ENDIF
  3095.        spec1x:=spec1x-1
  3096.       UNTIL spec1x=(cx3-21)
  3097.      Line(cx3,cy3,cx3-20,cy3,6)
  3098.      cx3:=cx3-20
  3099.      ENDIF
  3100.     ENDIF
  3101.  
  3102.      IF cway3=4
  3103.       IF cx3+20>313
  3104.        spec1x:=cx3
  3105.    REPEAT
  3106.         IF (checkcol(ReadPixel(hidden.rport,spec1x,cy3)))=TRUE
  3107.            Line(cx3,cy3,spec1x-1,cy3,6)
  3108.            cx3:=spec1x-1
  3109.            JUMP loopexitc3
  3110.           ENDIF
  3111.        spec1x:=spec1x+1
  3112.       UNTIL spec1x=314
  3113.        Line(cx3,cy3,313,cy3,6)
  3114.       cx3:=313
  3115.       ELSE
  3116.        spec1x:=cx3
  3117. IF samplei
  3118.  
  3119.   playData(samplei,sampleni,150000,CHAN_RIGHT1,40)
  3120. WaitTOF()
  3121. exitLoop(CHAN_RIGHT1)
  3122. ENDIF
  3123.       REPEAT
  3124.         IF (checkcol(ReadPixel(hidden.rport,spec1x,cy3)))=TRUE
  3125.            Line(cx3,cy3,spec1x-1,cy3,6)
  3126.            cx3:=spec1x-1
  3127.            JUMP loopexitc3
  3128.           ENDIF
  3129.        spec1x:=spec1x+1
  3130.       UNTIL spec1x=(cx3+21)
  3131.       Line(cx3,cy3,cx3+20,cy3,6) 
  3132.       cx3:=cx3+20
  3133.       ENDIF
  3134.     ENDIF
  3135.  
  3136. ENDIF
  3137. ENDIF
  3138.  
  3139. loopexitc3:
  3140.  
  3141.  
  3142. IF cdie4=FALSE
  3143. options(4)
  3144.   
  3145. IF (accelaration=2) AND (limspeedc4<1)
  3146. spec1rnd:=Rnd(300)
  3147.  
  3148. IF spec1rnd=25
  3149. limspeedc4:=100
  3150.  
  3151. IF samplei
  3152.   
  3153. playData(samplei,sampleni,150000,CHAN_RIGHT2,40)
  3154. WaitTOF()
  3155. exitLoop(CHAN_RIGHT2)
  3156. ENDIF
  3157. IF cway4=1
  3158. tempy1:=cx4
  3159. tempy2:=cx4
  3160. obhity1:=FALSE
  3161. obhity2:=FALSE
  3162. REPEAT
  3163. tempy1:=tempy1+1
  3164. IF (checkcol(ReadPixel(hidden.rport,tempy1,cy4+2)))=TRUE THEN obhity1:=TRUE
  3165. UNTIL (tempy1=(cx4+5)) OR (obhity1=TRUE)
  3166. IF obhity1=TRUE THEN tempy1:=tempy1-1
  3167. REPEAT
  3168. tempy2:=tempy2-1
  3169. IF (checkcol(ReadPixel(hidden.rport,tempy2,cy4+2)))=TRUE THEN obhity2:=TRUE
  3170. UNTIL (tempy2=(cx4-5)) OR (obhity2=TRUE)
  3171. IF obhity2=TRUE THEN tempy2:=tempy2+1
  3172. Line(tempy1,cy4+2,tempy2,cy4+2, 7)
  3173. ENDIF
  3174.  
  3175. IF cway4=3
  3176. tempy1:=cx4
  3177. tempy2:=cx4
  3178. obhity1:=FALSE
  3179. obhity2:=FALSE
  3180. REPEAT
  3181. tempy1:=tempy1+1
  3182. IF (checkcol(ReadPixel(hidden.rport,tempy1,cy4-2)))=TRUE THEN obhity1:=TRUE
  3183. UNTIL (tempy1=(cx4+5)) OR (obhity1=TRUE)
  3184. IF obhity1=TRUE THEN tempy1:=tempy1-1
  3185. REPEAT
  3186. tempy2:=tempy2-1
  3187. IF (checkcol(ReadPixel(hidden.rport,tempy2,cy4-2)))=TRUE THEN obhity2:=TRUE
  3188. UNTIL (tempy2=(cx4-5)) OR (obhity2=TRUE)
  3189. IF obhity2=TRUE THEN tempy2:=tempy2+1
  3190. Line(tempy1,cy4-2,tempy2,cy4-2, 7)
  3191. ENDIF
  3192.  
  3193. IF cway4=2
  3194. tempy1:=cy4
  3195. tempy2:=cy4
  3196. obhity1:=FALSE
  3197. obhity2:=FALSE
  3198. REPEAT
  3199. tempy1:=tempy1+1
  3200. IF (checkcol(ReadPixel(hidden.rport,cx4-2,tempy1)))=TRUE THEN obhity1:=TRUE
  3201. UNTIL (tempy1=(cy4+5)) OR (obhity1=TRUE)
  3202. IF obhity1=TRUE THEN tempy1:=tempy1-1
  3203. REPEAT
  3204. tempy2:=tempy2-1
  3205. IF (checkcol(ReadPixel(hidden.rport,cx4-2,tempy2)))=TRUE THEN obhity2:=TRUE
  3206. UNTIL (tempy2=(cy4-5)) OR (obhity2=TRUE)
  3207. IF obhity2=TRUE THEN tempy2:=tempy2+1
  3208. Line(cx4-2,tempy1,cx4-2,tempy2, 7)
  3209. ENDIF
  3210.  
  3211. IF cway4=4
  3212. tempy1:=cy4
  3213. tempy2:=cy4
  3214. obhity1:=FALSE
  3215. obhity2:=FALSE
  3216. REPEAT
  3217. tempy1:=tempy1+1
  3218. IF (checkcol(ReadPixel(hidden.rport,cx4+2,tempy1)))=TRUE THEN obhity1:=TRUE
  3219. UNTIL (tempy1=(cy4+5)) OR (obhity1=TRUE)
  3220. IF obhity1=TRUE THEN tempy1:=tempy1-1
  3221. REPEAT
  3222. tempy2:=tempy2-1
  3223. IF (checkcol(ReadPixel(hidden.rport,cx4+2,tempy2)))=TRUE THEN obhity2:=TRUE
  3224. UNTIL (tempy2=(cy4-5)) OR (obhity2=TRUE)
  3225. IF obhity2=TRUE THEN tempy2:=tempy2+1
  3226. Line(cx4+2,tempy1,cx4+2,tempy2, 7)
  3227. ENDIF
  3228. ENDIF
  3229. ELSE
  3230. limspeedc4:=limspeedc4-1
  3231. ENDIF
  3232. spec1rnd:=0
  3233.  
  3234.  
  3235.  
  3236.  
  3237. IF (limspeedc4<1) AND (accelaration=1)
  3238. spec1rnd:=Rnd(300) 
  3239. ELSE
  3240. limspeedc4:=limspeedc4-1
  3241.  
  3242. ENDIF
  3243.  
  3244. IF spec1rnd<>25 
  3245.         IF (checkcol(ReadPixel(hidden.rport,cx4,cy4)))=TRUE
  3246.             die(4)
  3247.            JUMP loopexitc4
  3248.           ENDIF
  3249.  Plot(cx4,cy4,7)
  3250. ELSE
  3251. limspeedc4:=100
  3252.  
  3253.      IF cway4=1 
  3254.       IF cy4-20<1
  3255.        spec1y:=cy4
  3256.    REPEAT
  3257.         IF (checkcol(ReadPixel(hidden.rport,cx4,spec1y)))=TRUE
  3258.            Line(cx4,cy4,cx4,spec1y+1,7)
  3259.             cy4:=spec1y+1
  3260.            JUMP loopexitc4
  3261.           ENDIF
  3262.        spec1y:=spec1y-1
  3263.       UNTIL spec1y=0
  3264.          Line(cx4,cy4,cx4,1,7)
  3265.         cy4:=1
  3266.      ELSE
  3267.        spec1y:=cy4
  3268. IF samplei
  3269.  
  3270.   playData(samplei,sampleni,150000,CHAN_RIGHT2,40)
  3271. WaitTOF()
  3272. exitLoop(CHAN_RIGHT2)
  3273. ENDIF
  3274.       REPEAT
  3275.         IF (checkcol(ReadPixel(hidden.rport,cx4,spec1y)))=TRUE
  3276.            Line(cx4,cy4,cx4,spec1y+1,7)
  3277.            cy4:=spec1y+1  
  3278.            JUMP loopexitc4
  3279.           ENDIF
  3280.        spec1y:=spec1y-1
  3281.       UNTIL spec1y=(cy4-21)
  3282.       Line(cx4,cy4,cx4,cy4-20,7)
  3283.       cy4:=cy4-20
  3284.       ENDIF
  3285.      ENDIF
  3286.  
  3287.      IF cway4=2 
  3288.       IF cy4+20>243
  3289.        spec1y:=cy4
  3290.    REPEAT
  3291.         IF (checkcol(ReadPixel(hidden.rport,cx4,spec1y)))=TRUE
  3292.            Line(cx4,cy4,cx4,spec1y-1,7)
  3293.            cy4:=spec1y-1
  3294.            JUMP loopexitc4
  3295.           ENDIF
  3296.        spec1y:=spec1y+1
  3297.       UNTIL spec1y=244
  3298.       Line(cx4,cy4,cx4,243,7)
  3299.       cy4:=243
  3300.       ELSE
  3301.        spec1y:=cy4
  3302. IF samplei
  3303.  
  3304.   playData(samplei,sampleni,150000,CHAN_RIGHT2,40)
  3305. WaitTOF()
  3306. exitLoop(CHAN_RIGHT2)
  3307. ENDIF
  3308.       REPEAT
  3309.         IF (checkcol(ReadPixel(hidden.rport,cx4,spec1y)))=TRUE
  3310.            Line(cx4,cy4,cx4,spec1y-1,7)
  3311.            cy4:=spec1y-1
  3312.            JUMP loopexitc4
  3313.           ENDIF
  3314.        spec1y:=spec1y+1
  3315.       UNTIL spec1y=(cy4+21)
  3316.       Line(cx4,cy4,cx4,cy4+20,7)
  3317.       cy4:=cy4+20
  3318.       ENDIF
  3319.      ENDIF
  3320.  
  3321.     IF cway4=3
  3322.      IF cx4-20<5
  3323.        spec1x:=cx4
  3324.    REPEAT
  3325.         IF (checkcol(ReadPixel(hidden.rport,spec1x,cy4)))=TRUE
  3326.            Line(cx4,cy4,spec1x+1,cy4,7)
  3327.            cx4:=spec1x+1
  3328.            JUMP loopexitc4
  3329.           ENDIF
  3330.        spec1x:=spec1x-1
  3331.       UNTIL spec1x=4
  3332.  
  3333.      Line(cx4,cy4,5,cy4,7)
  3334.      cx4:=5
  3335.      ELSE
  3336.        spec1x:=cx4
  3337. IF samplei
  3338.  
  3339.   playData(samplei,sampleni,150000,CHAN_RIGHT2,40)
  3340. WaitTOF()
  3341. exitLoop(CHAN_RIGHT2)
  3342. ENDIF
  3343.       REPEAT
  3344.         IF (checkcol(ReadPixel(hidden.rport,spec1x,cy4)))=TRUE
  3345.            Line(cx4,cy4,spec1x+1,cy4,7)
  3346.            cx4:=spec1x+1
  3347.            JUMP loopexitc4
  3348.           ENDIF
  3349.        spec1x:=spec1x-1
  3350.       UNTIL spec1x=(cx4-21)
  3351.      Line(cx4,cy4,cx4-20,cy4,7)
  3352.      cx4:=cx4-20
  3353.      ENDIF
  3354.     ENDIF
  3355.  
  3356.      IF cway4=4
  3357.       IF cx4+20>313
  3358.        spec1x:=cx4
  3359.    REPEAT
  3360.         IF (checkcol(ReadPixel(hidden.rport,spec1x,cy4)))=TRUE
  3361.            Line(cx4,cy4,spec1x-1,cy4,7)
  3362.            cx4:=spec1x-1
  3363.            JUMP loopexitc4
  3364.           ENDIF
  3365.        spec1x:=spec1x+1
  3366.       UNTIL spec1x=314
  3367.        Line(cx4,cy4,313,cy4,7)
  3368.       cx4:=313
  3369.       ELSE
  3370.        spec1x:=cx4
  3371. IF samplei
  3372.  
  3373.   playData(samplei,sampleni,150000,CHAN_RIGHT2,40)
  3374. WaitTOF()
  3375. exitLoop(CHAN_RIGHT2)
  3376. ENDIF
  3377.       REPEAT
  3378.         IF (checkcol(ReadPixel(hidden.rport,spec1x,cy4)))=TRUE
  3379.            Line(cx4,cy4,spec1x-1,cy4,7)
  3380.           cx4:=spec1x-1
  3381.            JUMP loopexitc4
  3382.           ENDIF
  3383.        spec1x:=spec1x+1
  3384.       UNTIL spec1x=(cx4+21)
  3385.       Line(cx4,cy4,cx4+20,cy4,7) 
  3386.       cx4:=cx4+20
  3387.       ENDIF
  3388.     ENDIF
  3389.  
  3390. ENDIF
  3391. ENDIF
  3392.  
  3393. loopexitc4:
  3394.  
  3395. ENDPROC
  3396.  
  3397. PROC options(cplay)
  3398. DEF decide, rand=0, go=FALSE, cx, cy, dier, cway
  3399.  
  3400.  
  3401. IF cplay=1 
  3402. cx:=cx1 ; cy:=cy1 ; dier:=1 ; cway:=cway1 ; cloop:=cloop1
  3403. ENDIF
  3404.  
  3405. IF cplay=2 
  3406. cx:=cx2 ; cy:=cy2 ; dier:=2 ; cway:=cway2 ; cloop:=cloop2
  3407. ENDIF
  3408.  
  3409. IF cplay=3 
  3410. cx:=cx3 ; cy:=cy3 ; dier:=3 ; cway:=cway3 ; cloop:=cloop3
  3411. ENDIF
  3412.  
  3413. IF cplay=4 
  3414. cx:=cx4 ; cy:=cy4 ; dier:=4 ; cway:=cway4 ; cloop:=cloop4
  3415. ENDIF
  3416.  
  3417. IF Not (stupid=9999)
  3418. cloop:=cloop+1
  3419. ENDIF
  3420.  
  3421. IF wrap=TRUE
  3422.   IF (cway=4) AND (cx=5) THEN cx:=314
  3423.   IF (cway=2) AND (cx=313) THEN cx:=4
  3424.   IF (cway=1) AND (cy=1) THEN cy:=244
  3425.   IF (cway=3) AND (cy=243) THEN cy:=0
  3426. ENDIF
  3427. IF cx<6 THEN cloop:=stupid-29
  3428. IF cx>313 THEN cloop:=stupid-29
  3429. IF cy<3 THEN cloop:=stupid-29
  3430. IF cy>243 THEN cloop:=stupid-29
  3431.  
  3432. IF cway=2
  3433. IF (cloop>stupid) OR (checkcol(ReadPixel(hidden.rport,cx+1,cy))=TRUE) THEN go:=TRUE ELSE cx:=cx+1
  3434. ENDIF
  3435. IF cway=4
  3436. IF (cloop>stupid) OR (checkcol(ReadPixel(hidden.rport,cx-1,cy))=TRUE) THEN go:=TRUE ELSE cx:=cx-1
  3437. ENDIF
  3438. IF cway=1
  3439. IF (cloop>stupid) OR (checkcol(ReadPixel(hidden.rport,cx,cy-1))=TRUE) THEN go:=TRUE ELSE cy:=cy-1
  3440. ENDIF
  3441. IF cway=3
  3442. IF (cloop>stupid) OR (checkcol(ReadPixel(hidden.rport,cx,cy+1))=TRUE) THEN go:=TRUE ELSE cy:=cy+1
  3443. ENDIF
  3444.  
  3445.  
  3446. IF go=TRUE
  3447. IF cloop>stupid THEN cloop:=0 ELSE cloop:=cloop+10
  3448. rand:=0
  3449.  
  3450.    IF (checkcol(ReadPixel(hidden.rport,cx+1,cy)))=FALSE THEN rand:=rand+1
  3451.    IF (checkcol(ReadPixel(hidden.rport,cx-1,cy)))=FALSE THEN rand:=rand+5
  3452.    IF (checkcol(ReadPixel(hidden.rport,cx,cy+1)))=FALSE THEN rand:=rand+20
  3453.    IF (checkcol(ReadPixel(hidden.rport,cx,cy-1)))=FALSE THEN rand:=rand+55
  3454.  
  3455. IF rand=1 THEN (cx:=cx+1) AND (cway:=2)
  3456. IF rand=5 THEN (cx:=cx-1) AND (cway:=4)
  3457. IF rand=20 THEN (cy:=cy+1) AND (cway:=3)
  3458. IF rand=55 THEN (cy:=cy-1) AND (cway:=1)
  3459.  
  3460. IF (rand=6) OR (rand=25) OR (rand=75) OR (rand=60) OR (rand=56) OR (rand=21)
  3461. decide:=Rnd(2)
  3462. IF (decide=0) AND (rand=6) THEN (cx:=cx+1) AND (cway:=2)
  3463. IF (decide=1) AND (rand=6) THEN (cx:=cx-1) AND (cway:=4)
  3464. IF (decide=0) AND (rand=25) THEN (cx:=cx-1) AND (cway:=4)
  3465. IF (decide=1) AND (rand=25) THEN (cy:=cy+1) AND (cway:=3)
  3466. IF (decide=0) AND (rand=75) THEN (cy:=cy+1) AND (cway:=1)
  3467. IF (decide=1) AND (rand=75) THEN (cy:=cy-1) AND (cway:=3)
  3468. IF (decide=0) AND (rand=60) THEN (cx:=cx-1) AND (cway:=4)
  3469. IF (decide=1) AND (rand=60) THEN (cy:=cy-1) AND (cway:=1)
  3470. IF (decide=0) AND (rand=56) THEN (cx:=cx+1) AND (cway:=2)
  3471. IF (decide=1) AND (rand=56) THEN (cy:=cy-1) AND (cway:=1)
  3472. IF (decide=0) AND (rand=21) THEN (cy:=cy+1) AND (cway:=3)
  3473. IF (decide=1) AND (rand=21) THEN (cx:=cx+1) AND (cway:=2)
  3474. ENDIF
  3475.  
  3476. IF (rand=26) OR (rand=76) OR (rand=80) OR (rand=61) 
  3477. decide:=Rnd(3)
  3478. IF (decide=0) AND (rand=26) THEN (cy:=cy+1) AND (cway:=3)
  3479. IF (decide=1) AND (rand=26) THEN (cx:=cx-1) AND (cway:=4)
  3480. IF (decide=2) AND (rand=26) THEN (cx:=cx+1) AND (cway:=2)
  3481. IF (decide=0) AND (rand=76) THEN (cy:=cy-1) AND (cway:=1)
  3482. IF (decide=1) AND (rand=76) THEN (cy:=cy+1) AND (cway:=3)
  3483. IF (decide=2) AND (rand=76) THEN (cx:=cx+1) AND (cway:=2)
  3484. IF (decide=0) AND (rand=80) THEN (cy:=cy+1) AND (cway:=3)
  3485. IF (decide=1) AND (rand=80) THEN (cy:=cy-1) AND (cway:=1)
  3486. IF (decide=2) AND (rand=80) THEN (cx:=cx-1) AND (cway:=4)
  3487. IF (decide=0) AND (rand=61) THEN (cy:=cy-1) AND (cway:=1)
  3488. IF (decide=1) AND (rand=61) THEN (cx:=cx-1) AND (cway:=4)
  3489. IF (decide=2) AND (rand=61) THEN (cx:=cx+1) AND (cway:=2)
  3490. ENDIF                              
  3491.  
  3492. IF rand=81
  3493. decide:=Rnd(4)
  3494. IF decide=0 THEN (cy:=cy+1) AND (cway:=3)
  3495. IF decide=1 THEN (cx:=cx-1) AND (cway:=4)
  3496. IF decide=2 THEN (cx:=cx+1) AND (cway:=2)
  3497. IF decide=3 THEN (cy:=cy-1) AND (cway:=1)
  3498. ENDIF
  3499.  
  3500. IF rand=0 THEN die(dier)
  3501. ENDIF
  3502.  
  3503. IF swooshy=TRUE
  3504. IF (cplay=1) AND (cway1<>cway)
  3505.    playData(sampled,samplend,1500000,CHAN_LEFT1,20)
  3506. WaitTOF()
  3507. exitLoop(CHAN_LEFT1)
  3508. ENDIF
  3509. IF (cplay=2) AND (cway2<>cway)
  3510.   playData(sampled,samplend,1600000,CHAN_LEFT2,20)
  3511. WaitTOF()
  3512. exitLoop(CHAN_LEFT2)
  3513. ENDIF
  3514. IF (cplay=3) AND (cway3<>cway)
  3515.   playData(sampled,samplend,1700000,CHAN_RIGHT1,20)
  3516. WaitTOF()
  3517. exitLoop(CHAN_RIGHT1)
  3518. ENDIF
  3519. IF (cplay=4) AND (cway4<>cway)
  3520.   playData(sampled,samplend,1800000,CHAN_RIGHT2,20)
  3521. WaitTOF()
  3522. exitLoop(CHAN_RIGHT2)
  3523. ENDIF
  3524. ENDIF
  3525.  
  3526. IF cplay=1 
  3527. cx1:=cx ; cy1:=cy ; cway1:=cway ; cloop1:=cloop
  3528. ENDIF
  3529. IF cplay=2 
  3530. cx2:=cx ; cy2:=cy ; cway2:=cway ; cloop2:=cloop
  3531. ENDIF
  3532. IF cplay=3 
  3533. cx3:=cx ; cy3:=cy ; cway3:=cway ; cloop3:=cloop
  3534. ENDIF
  3535. IF cplay=4 
  3536. cx4:=cx ; cy4:=cy ; cway4:=cway ; cloop4:=cloop
  3537. ENDIF
  3538.  
  3539. ENDPROC
  3540.  
  3541. PROC checkcol(colnum)
  3542. DEF crash=FALSE
  3543.  
  3544. IF colnum=1 THEN crash:=TRUE 
  3545. IF colnum=2 THEN crash:=TRUE 
  3546. IF colnum=4 THEN crash:=TRUE 
  3547. IF colnum=5 THEN crash:=TRUE 
  3548. IF colnum=6 THEN crash:=TRUE 
  3549. IF colnum=7 THEN crash:=TRUE 
  3550. IF colnum=63 THEN crash:=TRUE 
  3551. IF colnum=62 THEN crash:=TRUE 
  3552.  
  3553. IF (blocks=TRUE) AND (colnum=4) AND (cdie1=TRUE) AND (die1=TRUE) THEN crash:=FALSE
  3554. IF (blocks=TRUE) AND (colnum=5) AND (cdie2=TRUE) AND (die2=TRUE) THEN crash:=FALSE
  3555. IF (blocks=TRUE) AND (colnum=6) AND (cdie3=TRUE) AND (die3=TRUE) THEN crash:=FALSE
  3556. IF (blocks=TRUE) AND (colnum=7) AND (cdie4=TRUE) AND (die4=TRUE) THEN crash:=FALSE
  3557. ENDPROC crash
  3558.  
  3559. PROC send_read_request(game_event, game_io_msg:PTR TO iostd)
  3560.   game_io_msg.command:=GPD_READEVENT
  3561.   game_io_msg.flags:=0
  3562.   game_io_msg.data:=game_event
  3563.   game_io_msg.length:=SIZEOF inputevent
  3564.   SendIO(game_io_msg)  -> Asynchronous - message will return later
  3565.  
  3566. ENDPROC
  3567.  
  3568. PROC processEvents(game_io_msg:PTR TO iostd, game_msg_port:PTR TO mp, game_io_msgm:PTR TO iostd, game_msg_portm:PTR TO mp)
  3569.   DEF timeout, timeouts, button_count, code, code2, 
  3570.       game_event:inputevent,  
  3571.       game_eventm:inputevent
  3572.  
  3573.   DEF imsg:PTR TO intuimessage, imsgClass, imsgCode, gad
  3574.  
  3575.   timeouts:=0
  3576.   button_count:=0
  3577.   not_finished:=TRUE
  3578.  
  3579.   WHILE not_finished
  3580. imsg:=Gt_GetIMsg(hidden.userport)  
  3581.     gad:=imsg.iaddress
  3582.       imsgClass:=imsg.class
  3583.       imsgCode:=imsg.code
  3584.       Gt_ReplyIMsg(imsg)
  3585.  
  3586.     send_read_request(game_event, game_io_msg)
  3587.     send_read_request(game_eventm, game_io_msgm)
  3588.     
  3589.     WaitPort(game_msg_port)
  3590.     WaitPort(game_msg_portm)
  3591.  
  3592. WHILE ((NIL<>GetMsg(game_msg_port))) AND ((NIL<>GetMsg(game_msg_portm)))
  3593.       timeout:=FALSE
  3594.       code:=game_event.code
  3595.       code2:=game_eventm.code
  3596.  
  3597.       SELECT code
  3598.       CASE IECODE_NOBUTTON
  3599.         IF start1=TRUE
  3600.         timeout:=check_move(game_event)
  3601.         button_count:=0
  3602.         ENDIF
  3603.       CASE IECODE_LBUTTON
  3604.           IF start1=FALSE 
  3605.           start1:=TRUE
  3606.           ELSE
  3607. IF limspeed1=0
  3608. IF accelaration=1 THEN limspeed1:=40
  3609. IF accelaration=2 THEN limspeed1:=80
  3610.           IF accelaration<>0
  3611.  
  3612. IF play1control=0 THEN speed1:=4
  3613. IF play1control=1 THEN speed2:=4
  3614. IF play1control=2 THEN speed3:=4
  3615. IF play1control=3 THEN speed4:=4
  3616. ENDIF
  3617. ENDIF
  3618. ENDIF
  3619.       DEFAULT
  3620.       ENDSELECT
  3621.  
  3622.       SELECT code2
  3623.       CASE IECODE_NOBUTTON
  3624.         IF start1=TRUE
  3625.         timeout:=check_movem(game_eventm)
  3626.         button_count:=0
  3627.         ENDIF
  3628.       CASE IECODE_LBUTTON
  3629.           IF start1=FALSE 
  3630.           start1:=TRUE
  3631.           ELSE
  3632. IF limspeed2=0
  3633. IF accelaration=1 THEN limspeed2:=40
  3634. IF accelaration=2 THEN limspeed2:=80
  3635.           IF accelaration<>0
  3636. IF play2control=0 THEN speed1:=4
  3637. IF play2control=1 THEN speed2:=4
  3638. IF play2control=2 THEN speed3:=4
  3639. IF play2control=3 THEN speed4:=4
  3640. ENDIF
  3641. ENDIF
  3642.           ENDIF
  3643.       DEFAULT
  3644.       ENDSELECT
  3645.  
  3646.       IF timeout
  3647.         INC timeouts
  3648.       ELSE
  3649.         timeouts:=0
  3650.       ENDIF
  3651.  
  3652. IF imsgCode=95
  3653. REPEAT
  3654. ActivateWindow(hidden)
  3655. imsg:=Gt_GetIMsg(hidden.userport)  
  3656.     gad:=imsg.iaddress
  3657.       imsgClass:=imsg.class
  3658.       imsgCode:=imsg.code
  3659.       Gt_ReplyIMsg(imsg)
  3660. UNTIL (imsgCode=95) OR (imsgCode=69)
  3661. stdrast:=hidden.rport
  3662. SetStdRast(hidden.rport)
  3663. ENDIF
  3664.  
  3665. IF start1=TRUE
  3666. IF joy3loop=FALSE
  3667. IF imsgCode=76 THEN (movementx:=0) AND (movementy:=-1)
  3668. IF imsgCode=77 THEN (movementx:=0) AND (movementy:=1)
  3669. IF imsgCode=78 THEN (movementx:=1) AND (movementy:=0)
  3670. IF imsgCode=79 THEN (movementx:=-1) AND (movementy:=0)
  3671. ELSE
  3672. joy3loop:=FALSE
  3673. ENDIF
  3674. ENDIF
  3675.  
  3676. IF accelaration<>0
  3677. IF (limspeed3=0) AND (imsgCode=97)
  3678. IF accelaration=1 THEN limspeed3:=40
  3679. IF accelaration=2 THEN limspeed3:=80
  3680.  
  3681.  
  3682. IF play3control=0 THEN speed1:=4
  3683. IF play3control=1 THEN speed2:=4
  3684. IF play3control=2 THEN speed3:=4
  3685. IF play3control=3 THEN speed4:=4
  3686. ENDIF
  3687. ENDIF
  3688.  
  3689. IF (start1=FALSE) AND (imsgCode=97) THEN (start1:=TRUE)  AND (speed3:=0) AND (speed4:=0) AND (speed2:=0) AND (speed1:=0)
  3690.  
  3691. IF imsgCode=69 THEN not_finished:=FALSE
  3692.  
  3693. IF start1=TRUE 
  3694. IF play3control=0 THEN hmove(movementx, movementy, 1)
  3695. IF play3control=1 THEN hmove(movementx, movementy, 2)
  3696. IF play3control=2 THEN hmove(movementx, movementy, 3)
  3697. IF play3control=3 THEN hmove(movementx, movementy, 4)
  3698. ENDIF
  3699.  
  3700. IF start1=TRUE
  3701. IF joy4loop=FALSE
  3702. IF imsgCode=49 THEN (movementx3:=-1) AND (movementy3:=0)
  3703. IF imsgCode=50 THEN (movementx3:=1) AND (movementy3:=0)
  3704. IF imsgCode=32 THEN (movementx3:=0) AND (movementy3:=1)
  3705. IF imsgCode=16 THEN (movementx3:=0) AND (movementy3:=-1)
  3706. ELSE
  3707. joy4loop:=FALSE
  3708. ENDIF
  3709. ENDIF
  3710.  
  3711. IF accelaration<>0
  3712. IF (limspeed4=0) AND (imsgCode=64)
  3713. IF accelaration=1 THEN limspeed4:=40
  3714. IF accelaration=2 THEN limspeed4:=80
  3715.  
  3716. IF play4control=0 THEN speed1:=4
  3717. IF play4control=1 THEN speed2:=4
  3718. IF play4control=2 THEN speed3:=4
  3719. IF play4control=3 THEN speed4:=4
  3720. ENDIF
  3721. ENDIF
  3722. IF (start1=FALSE) AND (imsgCode=64) THEN (start1:=TRUE) AND (speed3:=0) AND (speed4:=0) AND (speed2:=0) AND (speed1:=0)
  3723.  
  3724. IF imsgCode=69 THEN not_finished:=FALSE
  3725.  
  3726. IF start1=TRUE 
  3727. IF play4control=0 THEN hmove(movementx3, movementy3, 1)
  3728. IF play4control=1 THEN hmove(movementx3, movementy3, 2)
  3729. IF play4control=2 THEN hmove(movementx3, movementy3, 3)
  3730. IF play4control=3 THEN hmove(movementx3, movementy3, 4)
  3731. ENDIF
  3732.  
  3733. ActivateWindow(hidden)
  3734. IF limspeed1>0 THEN limspeed1:=limspeed1-1
  3735. IF limspeed2>0 THEN limspeed2:=limspeed2-1
  3736. IF limspeed3>0 THEN limspeed3:=limspeed3-1
  3737. IF limspeed4>0 THEN limspeed4:=limspeed4-1
  3738. IF start1=TRUE THEN calccomp()
  3739.   ENDWHILE
  3740.   ENDWHILE
  3741. ENDPROC
  3742.  
  3743. PROC noise(whichnoise)
  3744. IF (samplei) AND (whichnoise=1)
  3745.  
  3746.   playData(samplei,sampleni,150000,CHAN_LEFT1,40)
  3747. WaitTOF()
  3748. exitLoop(CHAN_LEFT1)
  3749. ENDIF
  3750.  
  3751. IF (samplei) AND (whichnoise=2)
  3752.  
  3753. playData(samplei,sampleni,150000,CHAN_LEFT2,40)
  3754. WaitTOF()
  3755. exitLoop(CHAN_LEFT2)
  3756. ENDIF
  3757.  
  3758. IF (samplei) AND (whichnoise=3)
  3759.  
  3760.   playData(samplei,sampleni,150000,CHAN_RIGHT1,40)
  3761. WaitTOF()
  3762. exitLoop(CHAN_RIGHT1)
  3763. ENDIF
  3764.  
  3765. IF (samplei) AND (whichnoise=4)
  3766.  
  3767.   playData(samplei,sampleni,150000,CHAN_RIGHT2,40)
  3768. WaitTOF()
  3769. exitLoop(CHAN_RIGHT2)
  3770. ENDIF
  3771. ENDPROC
  3772.  
  3773. PROC set_controller_type(type, game_io_msg:PTR TO iostd, no)
  3774.     controller_type_addr1:=[0]:CHAR
  3775.     controller_type_addr2:=[0]:CHAR
  3776.  
  3777. IF no=1
  3778.   game_io_msg.command:=GPD_ASKCTYPE  
  3779.   game_io_msg.flags:=IOF_QUICK
  3780.   game_io_msg.data:=controller_type_addr1  
  3781.   game_io_msg.length:=1
  3782.   DoIO(game_io_msg)
  3783. ENDIF
  3784.  
  3785. IF no=2
  3786.   game_io_msg.command:=GPD_ASKCTYPE  
  3787.   game_io_msg.flags:=IOF_QUICK
  3788.   game_io_msg.data:=controller_type_addr2  
  3789.   game_io_msg.length:=1
  3790.   DoIO(game_io_msg)
  3791. ENDIF
  3792.  
  3793.     game_io_msg.command:=GPD_SETCTYPE
  3794.     game_io_msg.flags:=IOF_QUICK
  3795.     game_io_msg.data:=[type]:CHAR
  3796.     game_io_msg.length:=1
  3797.     DoIO(game_io_msg)
  3798.  
  3799. ENDPROC 
  3800.  
  3801. PROC set_trigger_conditions(gpt:PTR TO gameporttrigger,
  3802.                             game_io_msg:PTR TO iostd)
  3803.   gpt.keys:=GPTF_UPKEYS OR GPTF_DOWNKEYS
  3804.   gpt.xdelta:=JOY_X_DELTA
  3805.   gpt.ydelta:=JOY_Y_DELTA
  3806.   gpt.timeout:=1
  3807.  
  3808.   game_io_msg.command:=GPD_SETTRIGGER
  3809.   game_io_msg.flags:=IOF_QUICK
  3810.   game_io_msg.data:=gpt
  3811.   game_io_msg.length:=SIZEOF gameporttrigger
  3812.   DoIO(game_io_msg)
  3813.  
  3814. ENDPROC
  3815.  
  3816. PROC flush_buffer(game_io_msg:PTR TO iostd)
  3817.   game_io_msg.command:=CMD_CLEAR
  3818.   game_io_msg.flags:=IOF_QUICK
  3819.   game_io_msg.data:=NIL
  3820.   game_io_msg.length:=0
  3821.   DoIO(game_io_msg)
  3822. ENDPROC
  3823.  
  3824. PROC free_gp_unit(game_io_msg:PTR TO iostd, no)
  3825.  
  3826. IF no=1
  3827.   game_io_msg.command:=GPD_SETCTYPE
  3828.   game_io_msg.flags:=IOF_QUICK
  3829.   game_io_msg.data:=controller_type_addr1  
  3830.   game_io_msg.length:=1;
  3831.   DoIO(game_io_msg)
  3832. ENDIF
  3833. IF no=2
  3834.   game_io_msg.command:=GPD_SETCTYPE
  3835.   game_io_msg.flags:=IOF_QUICK
  3836.    game_io_msg.data:=controller_type_addr2  
  3837.      game_io_msg.length:=1;
  3838.   DoIO(game_io_msg)
  3839. ENDIF
  3840.  
  3841. ENDPROC
  3842.  
  3843. PROC begingame()
  3844. DEF pos0=FALSE, pos1=FALSE, pos2=FALSE, pos3=FALSE, pos4=FALSE, pos5=FALSE, pos6=FALSE, pos7=FALSE, pos8=FALSE, pos9=FALSE, pos10=FALSE, pos11=FALSE, pos12=FALSE, pos13=FALSE, pos14=FALSE, pos15=FALSE,
  3845. nochips, whichchip, poschip, posx, posy, badnum=TRUE, a[5]:STRING
  3846.  
  3847. IF playerno=0 
  3848. die1:=FALSE ; die2:=TRUE ; die3:=TRUE ; die4:=TRUE ; cdie1:=TRUE ; cdie2:=FALSE ; cdie3:=FALSE ; cdie4:=FALSE
  3849. ENDIF 
  3850. IF playerno=1 
  3851. die1:=FALSE ; die2:=FALSE ; die3:=TRUE ; die4:=TRUE ; cdie1:=TRUE ; cdie2:=TRUE ; cdie3:=FALSE ; cdie4:=FALSE
  3852. ENDIF 
  3853. IF playerno=2 
  3854. die1:=FALSE ; die2:=FALSE ; die3:=FALSE ; die4:=TRUE ; cdie1:=TRUE ; cdie2:=TRUE ; cdie3:=TRUE ; cdie4:=FALSE
  3855. ENDIF 
  3856. IF playerno=3 
  3857. die1:=FALSE ; die2:=FALSE ; die3:=FALSE ; die4:=FALSE ; cdie1:=TRUE ; cdie2:=TRUE ; cdie3:=TRUE ; cdie4:=TRUE
  3858. ENDIF 
  3859. IF playerno=4
  3860. die1:=TRUE ; die2:=TRUE ; die3:=TRUE ; die4:=TRUE ; cdie1:=FALSE ; cdie2:=FALSE ; cdie3:=FALSE ; cdie4:=FALSE ; start1:=TRUE
  3861. ENDIF 
  3862. IF play1control=0 THEN (movex:=0) AND (movey:=-1)
  3863. IF play1control=1 THEN (movex:=1) AND (movey:=0)
  3864. IF play1control=2 THEN (movex:=0) AND (movey:=1)
  3865. IF play1control=3 THEN (movex:=-1) AND (movey:=0)
  3866. IF play2control=0 THEN (movex2:=0) AND (movey2:=-1)
  3867. IF play2control=1 THEN (movex2:=1) AND (movey2:=0)
  3868. IF play2control=2 THEN (movex2:=0) AND (movey2:=1)
  3869. IF play2control=3 THEN (movex2:=-1) AND (movey2:=0)
  3870. IF play3control=0 THEN (movementx:=0) AND (movementy:=-1)
  3871. IF play3control=1 THEN (movementx:=1) AND (movementy:=0)
  3872. IF play3control=2 THEN (movementx:=0) AND (movementy:=1)
  3873. IF play3control=3 THEN (movementx:=-1) AND (movementy:=0)
  3874. IF play4control=0 THEN (movementx3:=0) AND (movementy3:=-1)
  3875. IF play4control=1 THEN (movementx3:=1) AND (movementy3:=0)
  3876. IF play4control=2 THEN (movementx3:=0) AND (movementy3:=1)
  3877. IF play4control=3 THEN (movementx3:=-1) AND (movementy3:=0)
  3878.  
  3879. IF play1control=0 THEN StringF(name1,'\s',tname1)
  3880. IF play1control=1 THEN StringF(name2,'\s',tname1)
  3881. IF play1control=2 THEN StringF(name3,'\s',tname1)
  3882. IF play1control=3 THEN StringF(name4,'\s',tname1)
  3883. IF play2control=0 THEN StringF(name1,'\s',tname2)
  3884. IF play2control=1 THEN StringF(name2,'\s',tname2)
  3885. IF play2control=2 THEN StringF(name3,'\s',tname2)
  3886. IF play2control=3 THEN StringF(name4,'\s',tname2)
  3887. IF play3control=0 THEN StringF(name1,'\s',tname3)
  3888. IF play3control=1 THEN StringF(name2,'\s',tname3)
  3889. IF play3control=2 THEN StringF(name3,'\s',tname3)
  3890. IF play3control=3 THEN StringF(name4,'\s',tname3)
  3891. IF play4control=0 THEN StringF(name1,'\s',tname4)
  3892. IF play4control=1 THEN StringF(name2,'\s',tname4)
  3893. IF play4control=2 THEN StringF(name3,'\s',tname4)
  3894. IF play4control=3 THEN StringF(name4,'\s',tname4)
  3895.  
  3896.  
  3897. IF hiddenclosed=TRUE
  3898. hidden:=OpenW(0,11,320,245,IDCMP_RAWKEY, WFLG_BORDERLESS OR WFLG_ACTIVATE, NIL, screen,$F,NIL,NIL)
  3899. hiddenclosed:=FALSE
  3900. ELSE
  3901. SetStdRast(hidden.rport)
  3902. ENDIF
  3903. setcols2()
  3904. IfFL_DecodePic(gamepicmem,screen+184)
  3905. ShowTitle(screen, TRUE)
  3906. offMousePointer(hidden)
  3907. SetTopaz(8)
  3908. setlines()
  3909. Line(4,0,314,0,2)
  3910. Line(4,244,314,244,2)
  3911. Line(4,0,4,244,2)
  3912. Line(314,0,314,244,2)
  3913.  
  3914.  
  3915. Box(193,221,195,223,4)
  3916. Box(38,166,40,168,5)
  3917. Box(105,45,107,47,6)
  3918. Box(275,82,277,84,7)
  3919.  
  3920. IF obstacles=TRUE
  3921. nochips:=Rnd(16)
  3922. REPEAT
  3923. whichchip:=Rnd(2)
  3924. poschip:=Rnd(16)
  3925.  
  3926. IF (pos0=FALSE) AND (poschip=0)
  3927. posx:=36
  3928. posy:=31
  3929. pos0:=TRUE
  3930. badnum:=FALSE
  3931. ENDIF
  3932.  
  3933. IF (pos1=FALSE) AND (poschip=1)
  3934. posx:=38
  3935. posy:=91
  3936. pos1:=TRUE
  3937. badnum:=FALSE
  3938. ENDIF
  3939.  
  3940. IF (pos2=FALSE) AND (poschip=2)
  3941. posx:=45
  3942. posy:=212
  3943. pos2:=TRUE
  3944. badnum:=FALSE
  3945. ENDIF
  3946.  
  3947. IF (pos3=FALSE) AND (poschip=3) 
  3948. posx:=135
  3949. posy:=47
  3950. pos3:=TRUE
  3951. badnum:=FALSE
  3952. ENDIF
  3953.  
  3954. IF (pos4=FALSE) AND (poschip=4)
  3955. posx:=100
  3956. posy:=111
  3957. pos4:=TRUE
  3958. badnum:=FALSE
  3959. ENDIF
  3960.  
  3961. IF (pos5=FALSE) AND (poschip=5)
  3962. posx:=95
  3963. posy:=169
  3964. pos5:=TRUE
  3965. badnum:=FALSE
  3966. ENDIF
  3967.  
  3968. IF (pos6=FALSE) AND (poschip=6) 
  3969. posx:=97
  3970. posy:=210
  3971. pos6:=TRUE
  3972. badnum:=FALSE
  3973. ENDIF
  3974.  
  3975. IF (pos7=FALSE) AND (poschip=7) 
  3976. posx:=144
  3977. posy:=107
  3978. pos7:=TRUE
  3979. badnum:=FALSE
  3980. ENDIF
  3981.  
  3982. IF (pos8=FALSE) AND (poschip=8)
  3983. posx:=186
  3984. posy:=87
  3985. pos8:=TRUE
  3986. badnum:=FALSE
  3987. ENDIF
  3988.  
  3989. IF (pos9=FALSE) AND (poschip=9) 
  3990. posx:=169
  3991. posy:=141
  3992. pos9:=TRUE
  3993. badnum:=FALSE
  3994. ENDIF
  3995.  
  3996. IF (pos10=FALSE) AND (poschip=10)
  3997. posx:=208
  3998. posy:=216
  3999. pos10:=TRUE
  4000. badnum:=FALSE
  4001. ENDIF
  4002.  
  4003. IF (pos11=FALSE) AND (poschip=11)
  4004. posx:=234
  4005. posy:=161
  4006. pos11:=TRUE
  4007. badnum:=FALSE
  4008. ENDIF
  4009.  
  4010. IF (pos12=FALSE) AND (poschip=12)
  4011. posx:=271
  4012. posy:=207
  4013. pos12:=TRUE
  4014. badnum:=FALSE
  4015. ENDIF
  4016.  
  4017. IF (pos13=FALSE) AND (poschip=13)
  4018. posx:=279
  4019. posy:=141
  4020. pos13:=TRUE
  4021. badnum:=FALSE
  4022. ENDIF
  4023.  
  4024. IF (pos14=FALSE) AND (poschip=14)
  4025. posx:=234
  4026. posy:=21
  4027. pos14:=TRUE
  4028. badnum:=FALSE
  4029. ENDIF
  4030.  
  4031. IF (pos15=FALSE) AND (poschip=15)
  4032. posx:=280
  4033. posy:=38
  4034. pos15:=TRUE
  4035. badnum:=FALSE
  4036. ENDIF
  4037.  
  4038. IF badnum=FALSE
  4039. nochips:=nochips-1
  4040. IF whichchip=0 THEN DrawImage(hidden.rport, chip1data, posx,posy)
  4041. IF whichchip=1 THEN DrawImage(hidden.rport, chip2data, posx,posy)
  4042. badnum:=TRUE
  4043. ENDIF
  4044.  
  4045. UNTIL nochips=-1
  4046. ENDIF
  4047.  
  4048. gameinitial()
  4049. ENDPROC
  4050.  
  4051. PROC die(player)
  4052. IF Not ((die1+die2+die3+die4+cdie1+cdie2+cdie3+cdie4)=-8) 
  4053.  
  4054. IF (samplec) AND (player=1)
  4055. clearaudio(1)
  4056.   playData(samplec,samplenc,4500000,CHAN_LEFT1,64)
  4057. WaitTOF()
  4058. exitLoop(CHAN_LEFT1)
  4059. ENDIF
  4060.  
  4061. IF (samplec) AND (player=2)
  4062. clearaudio(2)
  4063.   playData(samplec,samplenc,4500000,CHAN_LEFT2,64)
  4064. WaitTOF()
  4065. exitLoop(CHAN_LEFT2)
  4066. ENDIF
  4067.  
  4068. IF (samplec) AND (player=3)
  4069. clearaudio(3)
  4070.   playData(samplec,samplenc,4500000,CHAN_RIGHT1,64)
  4071. WaitTOF()
  4072. exitLoop(CHAN_RIGHT1)
  4073. ENDIF
  4074.  
  4075. IF (samplec) AND (player=4)
  4076. clearaudio(4)
  4077.   playData(samplec,samplenc,4500000,CHAN_RIGHT2,64)
  4078. WaitTOF()
  4079. exitLoop(CHAN_RIGHT2)
  4080. ENDIF
  4081.  
  4082. IF player=1
  4083. IF blocks=TRUE THEN SetColour(screen,4,0,0,127) ELSE SetColour(screen,4,0,0,0)
  4084. die1:=TRUE
  4085. cdie1:=TRUE
  4086. ENDIF
  4087. IF player=2
  4088. IF blocks=TRUE THEN SetColour(screen,5,0,0,127) ELSE SetColour(screen,5,0,0,0)
  4089. die2:=TRUE
  4090. cdie2:=TRUE
  4091. ENDIF
  4092. IF player=3
  4093. IF blocks=TRUE THEN SetColour(screen,6,0,0,127) ELSE SetColour(screen,6,0,0,0)
  4094. die3:=TRUE
  4095. cdie3:=TRUE
  4096. ENDIF
  4097. IF player=4
  4098. IF blocks=TRUE THEN SetColour(screen,7,0,0,127) ELSE SetColour(screen,7,0,0,0)
  4099. die4:=TRUE
  4100. cdie4:=TRUE
  4101. ENDIF
  4102. IF (die1+die2+die3+die4+cdie1+cdie2+cdie3+cdie4)=-7 
  4103. IF (cdie1=FALSE) OR (die1=FALSE) THEN play1:=play1+1
  4104. IF (cdie2=FALSE) OR (die2=FALSE) THEN play2:=play2+1
  4105. IF (cdie3=FALSE) OR (die3=FALSE) THEN play3:=play3+1
  4106. IF (cdie4=FALSE) OR (die4=FALSE) THEN play4:=play4+1
  4107. die1:=TRUE ; die2:=TRUE ; die3:=TRUE ; die4:=TRUE ; cdie1:=TRUE ; cdie2:=TRUE ; cdie3:=TRUE ; cdie4:=TRUE
  4108. not_finished:=FALSE
  4109. Delay(50)
  4110. ENDIF
  4111. ENDIF
  4112. ENDPROC
  4113.  
  4114. PROC decrypt() HANDLE
  4115.  
  4116. samplec:=AllocMem(3900, MEMF_CHIP)
  4117. CopyMem({data}, samplec, 3900)
  4118. samplenc:=3900
  4119.  
  4120. sample:=AllocMem(12760, MEMF_CHIP)
  4121. CopyMem({data}+3900, sample, 12760)
  4122. samplen:=12760
  4123.  
  4124. sampled:=AllocMem(3121, MEMF_CHIP)
  4125. CopyMem({data}+3900+12760, sampled, 3121)
  4126. samplend:=3121
  4127.  
  4128. samplei:=AllocMem(9536, MEMF_CHIP)
  4129. CopyMem({data}+3900+12760+3120, samplei, 9536)
  4130. sampleni:=9536
  4131.  
  4132. EXCEPT DO
  4133. ReThrow()
  4134. ENDPROC
  4135.  
  4136. PROC request(body,no,end)
  4137.  
  4138. IF no=0
  4139. EasyRequestArgs(0,[20,0,'LightSpeed2',body,'Terminate'],0,NIL)
  4140. ELSE
  4141. EasyRequestArgs(0,[20,0,'LightSpeed2',body,end],0,NIL)
  4142. ENDIF
  4143. ENDPROC 
  4144.  
  4145. PROC initaudio() HANDLE
  4146. DEF len=NIL:PTR TO ln, men=NIL:PTR TO mn, iow=NIL:PTR TO iostd, 
  4147. message:PTR TO ioaudio, waveptr:PTR TO INT, errors
  4148.  
  4149.   men:=audioio
  4150.   men.replyport:=audiomp
  4151.   len:=audioio
  4152.   len.pri:=127
  4153.   iow:=audioio
  4154.   audioio.allockey:= 0
  4155.   iow.command := ADCMD_ALLOCATE
  4156.   iow.flags := ADIOF_NOWAIT
  4157.   audioio.data := [15]:CHAR
  4158.   audioio.length := 30000
  4159.   beginIO(audioio)
  4160.  
  4161. IF iow.unit<>15 THEN Raise(ERR_DEV3)
  4162.  
  4163. bob:=audioio.allockey
  4164. EXCEPT DO
  4165. ReThrow()
  4166. ENDPROC
  4167.  
  4168. PROC cleanupaudio()
  4169. DEF iow=NIL:PTR TO iostd
  4170.  
  4171.   iow:=audioio
  4172.   iow.command := ADCMD_FREE
  4173.   audioio.allockey :=bob
  4174.   audioio.data := [15]:CHAR
  4175.   audioio.length := 30000
  4176.   beginIO (audioio)
  4177.  
  4178. ENDPROC
  4179.  
  4180. PROC clearaudio(audiochan)
  4181. DEF pow=NIL:PTR TO iostd, datafora
  4182. IF audiochan=1 THEN datafora:=2
  4183. IF audiochan=2 THEN datafora:=4
  4184. IF audiochan=3 THEN datafora:=1
  4185. IF audiochan=4 THEN datafora:=8
  4186.  
  4187.   pow:=audioio
  4188.   pow.command := CMD_RESET
  4189.   audioio.allockey :=bob
  4190.   audioio.data := [datafora]:CHAR
  4191.   audioio.length := 30000
  4192.   beginIO (audioio)
  4193.  
  4194. ENDPROC
  4195.  
  4196.  
  4197.  
  4198. verstag: CHAR 0, '$VER: LightSpeed 2.1 - Copyright © 1998 Micro Design (05.02.99)',NIL
  4199.  
  4200. mainpic: INCBIN 'light.iff'
  4201. gamepic: INCBIN 'fadetile.iff'
  4202. data: INCBIN 'light.dat'
  4203.  
  4204.  
  4205.  
  4206.  
  4207.  
  4208.